2011-07-06 19 views
8

目前我使用的是UIKeyinput,但它只是发送一个单独的delteBackward事件,即使我长时间按住删除键。 当我长时间保持删除状态时,如何让它向我发送多个事件通话?我如何使UIKeyInput重复deleteBackwards调用

+0

你这个问题取得任何进展? –

回答

3

有没有简单的方法让系统键盘自动重复。这些让你有两个选择:

  1. 假它通过使用键盘上的覆盖(见@ pho0评论)
  2. 实现自定义键盘,它安装的inputView您的视图或视图控制器实现支持自动重复的自定义协议。

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

解决方案2涉及一定量的“预先”工作......您可能会这样做的一种方式是定义键帽类(如物理键)和键盘布局类。

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

为了什么是值得的,我发现它有用的键盘类是愚蠢的;它只是表明一个密钥已经转换为关闭状态或已经转换为启动状态。另外一个班级决定应采取什么行动。

在某些方面,我知道这是不是你要找的答案,但我希望它能帮助, IDZ

+0

你介意发布你的解决方案2代码?谢谢 –

+0

@ tommy7xp对不起,这不是代码我可以自由发布。 – idz

3

我见过的一件事就是在键盘按钮上放一个假按钮。当有人按住它时,定时器会在每次触发时删除最后一个字母。

希望这会有所帮助。