我正在使用Swift为iOS 8编写自定义键盘扩展,但在实现Swype风格的涂鸦叠加时遇到了问题。目前,我的键盘具有一个基础的
UIView
(即我的UIInputViewController
的view
属性),其中包含许多对应于键盘上按键的UIButtons
。这些按键都响应touchUpInside
事件,并具有UISwipeGestureRecognizers
,当向上或向下滑动时输入次要字符。我已经重写了touchesBegan:withEvent:
以将我的涂鸦叠加视图添加为子视图,并在我的UIInputViewController
中使用touchesEnded:withEvent:
来删除我的涂鸦叠加视图。
目前,如果我尝试从一些按钮之间的空格开始涂鸦,则涂鸦叠加视图会正确出现。但是,如果我从一个UIButton
上开始涂鸦,则UIButton
会捕获触摸事件并不将其转发给我的UIInputViewController
。
我该如何实现我的键盘,使得用户在按键之间涂鸦时出现涂鸦叠加视图,但在处理按钮按下/滑动时不出现涂鸦叠加视图?
--编辑--
我尝试通过重写touchesBegan/Moved/Ended/Cancelled
方法将事件转发给下一个响应者来解决此问题。如果我单击一个按钮,然后再单击另一个按钮,我可以在两者之间显示涂鸦。但是,我仍然无法在按钮上绘制任何涂鸦,作为按钮之间的涂鸦。有人有更好的想法吗?
--编辑#2--
目前,我的视图层次结构设置如下:
UIView
(来自UIInputViewController
)
子视图:所有按钮,然后是我的ScribbleView
叠加在子视图上。
如果我在ScribbleView
上设置userInteractionEnabled
为true,则可以在任何位置显示涂鸦,而不管起始位置如何,但是我会失去按钮功能。
至于源代码,我一直在尝试传递触摸事件等各种配置,但主要代码可以在此处找到:https://github.com/Kamaros/ELDeveloperKeyboard。