如何让UIKeyInput重复执行deleteBackwards调用

Tom*_*Dev 8 uiresponder ios

目前我正在使用UIKeyinput但它只发送一个delteBackward事件,即使我按住删除键很长一段时间.当我长时间保持删除时,如何让它向我发送多个事件?

idz*_*idz 3

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

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

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

解决方案 2 涉及一定量的“前期”工作...您可以执行此操作的一种方法是定义键帽类(如物理键)和键盘布局类。

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

不管怎样,我发现让键盘类变得愚蠢很有用;它只是传达一个键已转换为按下状态或已转换为打开状态。上面的附加类决定应采取什么操作。

在某些方面,我知道这不是您正在寻找的答案,但我希望它能有所帮助,IDZ