ios - 我如何让 UIKeyInput 重复调用 deleteBackwards

标签 ios uiresponder

目前我正在使用 UIKeyinput,但即使我长时间按住删除键,它也只会发送一个 delteBackward 事件。 如何让它在我按住 delete 键很长时间时向我发送多个事件调用?

最佳答案

没有简单的方法让系统键盘自动重复。这给您留下了两个选择:

  1. 通过在键盘上使用覆盖层来伪造它(请参阅@pho0 的评论)
  2. 实现自定义键盘,将其安装为 View 或 View Controller 的输入 View ,并实现支持自动重复的自定义协议(protocol)。

如果您只需要删除键来自动重复,则解决方案 1 效果很好,但如果您需要所有键来自动重复,覆盖代码将变得与自定义键盘选项一样复杂。 (覆盖层需要每个键都有一个矩形,所以为什么不直接替换下层键盘)。

解决方案 2 涉及一定数量的“前期”工作……您可以这样做的一种方法是定义键帽类(如物理键)和键盘布局类。

我在我从事的项目中实现了这两种解决方案,但我目前使用解决方案 2,因为我可以创建我喜欢的任何键盘。在简单的情况下,用户永远不需要知道它不是系统键盘。对于高级用户,他们可以根据自己的喜好自定义键盘。

就其值(value)而言,我发现让键盘类成为哑巴很有用;它只是传达一个键已经转变为向下或已经转变为向上。上面的一个额外的类决定应该采取什么行动。

在某些方面,我知道这不是您要找的答案,但我希望它对您有所帮助, 工业区

关于ios - 我如何让 UIKeyInput 重复调用 deleteBackwards,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591548/

相关文章:

iOS:如何将触摸事件从 subview 转发到父 View ?

iphone - 在 iOS 上,如果一个 super View 的 userInteractionEnabled 是 NO,那么所有的 subview 也会被禁用吗?

ios - 从 iOS 锁定屏幕在应用程序中自定义远程事件处理

ios - 核心数据 : What difference between insertNewObject vs designated initializer

ios - 屏幕锁定 (IOS) 后,React native Webview 被阻止

ios - UITextField 最多可容纳小数点前 10 个数字和小数点后最多三个数字

ios - 仅在 iOS 9 上,触摸事件在屏幕左边缘附近延迟。如何解决?

ios - 为什么类 AppDelegate 继承自 UIResponder?

android - iPhone 在响应式布局中忽略了主体边距

ios - Xcode 复制 NSDictionary