我已经实现了一个复杂的 UITextInput,它在 iOS 上运行良好,但缺少一个功能:
- 当用户连接了硬件键盘(至少在模拟器中)并且没有选择任何文本并按下 Forward Delete 时,什么也没有发生。
请注意,我指的不是 Mac 上标记为 Delete 的键,它只是一个 Backspace 键——使用 UIKeyInput deleteBackward 方法的实现已经可以正常工作。
两个问题:
iOS 是否可以正确处理 Forward Delete(例如,带有 Fn + Delete 的蓝牙 Mac 硬件键盘不是 Backspace,而是 Forward Delete)。这适用于我的 Mac 笔记本电脑吗?(答案似乎是肯定的,因为我刚刚在 Safari 的模拟器中的硬件键盘(我的主机 Mac 开发机器)上测试了 Forward Delete。)
如果在其他应用程序中可能并且很常见,我该如何拦截这个关键命令?我找不到要作为字符串发送的内容来创建 UIKeyCommand,也找不到任何有意义的 API 方法以简单的方式执行此操作。
另请注意,在此自定义文本编辑器中选择文本并按 Forward Delete 键已经正常工作,因此 iOS 似乎知道此键。
仅供参考,此代码使用 C#,但也欢迎使用 Swift 或 Objective-C 回答第 (2) 部分。
(我目前最好的猜测可能是尝试弄乱这个问题中的代码?- 只是为了得到这个相当常见的密钥似乎真的很头疼?)
更新:
现在按 Delete(右键删除而不是退格键)在 iOS 上以某种方式工作,至少在模拟器上是这样。这可能是 TextInput 系统中的一个错误,因为现在当我按下右键删除键时,系统调用我的代码来选择光标右侧的单个字符,然后调用我的 DeleteBackwards 代码来删除选择(哪个代码知道如何删除选定的文本)。奇怪但很高兴这现在按预期工作,“开箱即用”。