我有几个 iOS 应用程序,它们呈现固有的线性组织信息,允许用户通过屏幕控件向前和向后移动数据。我想允许使用键盘底座或配对蓝牙键盘的用户也可以使用箭头键来回移动。由于应用程序是全屏的,因此不存在显示屏幕键盘作为副作用的风险,这对用户体验非常重要。
我在 Apple 的文档中找不到可以让我执行此操作的 API;但我不能确定我使用了正确的搜索词。
有哪些 API 可以让我实现这一目标?
更新:我已将此作为对Apple 错误报告网站的增强。
我有几个 iOS 应用程序,它们呈现固有的线性组织信息,允许用户通过屏幕控件向前和向后移动数据。我想允许使用键盘底座或配对蓝牙键盘的用户也可以使用箭头键来回移动。由于应用程序是全屏的,因此不存在显示屏幕键盘作为副作用的风险,这对用户体验非常重要。
我在 Apple 的文档中找不到可以让我执行此操作的 API;但我不能确定我使用了正确的搜索词。
有哪些 API 可以让我实现这一目标?
更新:我已将此作为对Apple 错误报告网站的增强。
您可以通过参考UIKeyInput
和轻松确定按下了哪些箭头键UIKeyInputDelegate
。您正在寻找的具体方法是positionFromPosition:inDirection:offset:
.
在调用该方法(iOS 使用它来确定选择范围)之后,它将调用setSelectedText:
. 将NSLog
语句放入其中positionFromPosition:inDirection:offset:
以确定它是如何工作的(您负责管道)。
另请查看SimpleTextInput。这将为您提供一个关于子类化的模板UITextInput
。
如何响应外部键盘箭头键中的答案?- 创建一个隐藏的文本字段并对选择更改做出反应 - 对我有用。
您可以通过添加对左/右滑动或拖动手势的支持来完全消除键盘,这样用户基本上可以将应用程序视为照片库。不需要屏幕控制——它是一种设备原生导航范例,在应用启动启动画面上很容易解释。
但是,如果需要外部键盘来支持其他应用程序数据收集功能,用户将遇到“大猩猩手臂”问题......
实际上不知道,我怀疑答案是“你不能,不是以官方方式”。
根据 Apple 的说法,用户友好的 UI 是 iPad 平台的重中之重,我认为他们正在尽其所能阻止依赖可用键盘的行为。应用程序的行为应该相同,并在有或没有硬件键盘的情况下提供相同的功能。出于这个原因,诸如键盘热键或不使用屏幕元素的导航之类的东西可能是不可以的。
但是,就像我说的,这只是猜测。