创新互联IOS教程:处理实体键盘上的按键操作

概览

在 iOS App 和用 Mac Catalyst 构建的 Mac App 中,系统会通过向活跃 App 响应器链中的响应器对象发送按键事件来报告用户在实体键盘上的按键操作。

创新互联服务项目包括扶风网站建设、扶风网站制作、扶风网页制作以及扶风网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,扶风网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到扶风省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

响应器链是一系列关联的 UIResponder 对象,例如,UIViewControllerUIApplication,这些对象用于处理事件或将处理事件的责任转移给 App 中的其他响应器。要进一步了解响应器和响应器链,请参阅“使用响应器和响应器链处理事件”。

检测按键操作

要检测用户在实体键盘上的按键操作,请覆盖 App 委托或主视图控制器等 App 响应器对象中的 pressesBegan(_:with:)

要确定用户按下的按键,请遍历整个按键事件集合,检查每个按键事件的 key 属性。使用 charactersIgnoringModifiers 来确定按键的文本值,以及响应器是否应该处理按键操作。如果响应器没有处理按键操作,请在超类中调用 pressesBegan(_:with:),将按键事件发送到活跃响应器链中的下一个响应器。

例如,在下面的代码摘录中,当用户按下左箭头键和右箭头键时,游戏人物会向后和向前跑动:

 override func pressesBegan(_ presses: Set, with event: UIPressesEvent?) {  // Run backward or forward when the user presses a left or right arrow key.    var didHandleEvent = false  for press in presses {  guard let key = press.key else { continue }  if key.charactersIgnoringModifiers == UIKeyCommand.inputLeftArrow {  runBackward()  didHandleEvent = true  }  if key.charactersIgnoringModifiers == UIKeyCommand.inputRightArrow {  runForward()  didHandleEvent = true  }  }    if didHandleEvent == false {  // Didn't handle this key press, so pass the event to the next responder.  super.pressesBegan(presses, with: event)  } }

检测松开按键操作

覆盖响应器的 pressesEnded(_:with:) 方法可以检测用户何时松开按键。要获取关于按键的信息,请完成与检测按键操作时相同的操作;检查 presses 集合中每个按键事件的 key 属性。例如,在下面的代码摘录中,当用户松开左箭头键或右箭头键时,游戏人物会停止向特定方向跑动:

 override func pressesEnded(_ presses: Set, with event: UIPressesEvent?) {  // Stop running when the user releases the left or right arrow key.    var didHandleEvent = false  for press in presses {  guard let key = press.key else { continue }  if key.charactersIgnoringModifiers == UIKeyCommand.inputLeftArrow {  stopRunningBackward()  didHandleEvent = true  }  if key.charactersIgnoringModifiers == UIKeyCommand.inputRightArrow {  stopRunningForward()  didHandleEvent = true  }  }    if didHandleEvent == false {  // Didn't handle this key press, so pass the event to the next responder.  super.pressesBegan(presses, with: event)  } }

网站名称:创新互联IOS教程:处理实体键盘上的按键操作
转载源于:http://www.shufengxianlan.com/qtweb/news7/302357.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联