在iOS应用程序中,如何检测用户是否按下了外部键盘上的某个箭头键?

时间:2010-10-16 08:49:34

标签: ios keyboard bluetooth arrow-keys

我有几个iOS应用程序,它们提供固有的线性组织信息,允许用户通过屏幕控制向前和向后移动数据。我想允许使用键盘底座或配对蓝牙键盘的用户使用箭头键来回移动。由于应用程序是全屏的,因此用户体验非常重要,因为没有显示屏幕键盘作为副作用的风险。

我无法在Apple的文档中找到允许我这样做的API;但我无法确定我是否使用了正确的搜索字词。

哪些API可以让我实现这个目标?

更新:我已将其作为Apple's bug reporting site的增强功能提出。

4 个答案:

答案 0 :(得分:3)

您可以参考UIKeyInputUIKeyInputDelegate轻松确定按下了哪些箭头键。您正在寻找的方法是positionFromPosition:inDirection:offset:

调用该方法后(iOS用它来确定选择范围),然后调用setSelectedText:。将NSLog语句放在positionFromPosition:inDirection:offset:中以确定它是如何工作的(您负责管道)。

另请查看SimpleTextInput。这将为您提供子类化UITextInput

的模板

答案 1 :(得分:3)

How can I respond to external keyboard arrow keys?中的答案 - 创建隐藏文本字段并对选择更改作出反应 - 为我工作。

答案 2 :(得分:0)

实际上并不知道,我怀疑答案是“你不能,不能以官方方式”。

根据Apple的说法,由于用户友好的用户界面是iPad平台的首要任务,我认为他们正在尽其所能阻止依赖键盘可用的行为。应用程序的行为应相同,并提供相同的功能,无论是否有硬件键盘。键盘热键或不使用屏幕元素的导航之类的东西可能是禁忌的。因此。

但是,就像我说的那样,这只是猜测。

答案 3 :(得分:0)

您可以通过添加对左/右滑动或拖动手势的支持来完全消除键盘,这样用户就可以将应用程序视为照片库。不需要屏幕控制 - 它是设备本地导航范例,易于在应用启动闪屏上解释。

如果外部键盘是必需,以支持其他应用数据收集功能,用户将遇到“大猩猩手臂”问题......