Ios 如何有条件地拦截触摸事件?
我正在用Swift为iOS 8编写一个自定义键盘扩展,但在实现Swype样式的涂鸦覆盖时遇到了问题。现在,我的键盘有一个基本的Ios 如何有条件地拦截触摸事件?,ios,uiview,uibutton,touch,swift,Ios,Uiview,Uibutton,Touch,Swift,我正在用Swift为iOS 8编写一个自定义键盘扩展,但在实现Swype样式的涂鸦覆盖时遇到了问题。现在,我的键盘有一个基本的UIView(myUIInputViewController的view属性),它有许多与键盘上的键相对应的ui按钮。这些按键中的每一个都响应touchUpInside事件,并具有UISweepGestureRecognitors,可在上下滑动时输入辅助字符。我已覆盖了触摸开始:withEvent:以将我的涂鸦覆盖视图添加为子视图,并覆盖了触摸结束:withEvent:以删
UIView
(myUIInputViewController
的view
属性),它有许多与键盘上的键相对应的ui按钮。这些按键中的每一个都响应touchUpInside
事件,并具有UISweepGestureRecognitors
,可在上下滑动时输入辅助字符。我已覆盖了触摸开始:withEvent:
以将我的涂鸦覆盖视图添加为子视图,并覆盖了触摸结束:withEvent:
以删除我的UIInputViewController中的涂鸦覆盖视图
当前,如果我尝试从按钮之间的某些间距开始涂鸦,涂鸦覆盖视图将正确显示。但是,如果我从ui按钮
顶部开始涂鸦,则ui按钮
会捕获触摸事件,而不会将其转发到我的ui输入视图控制器
如果用户在按钮之间涂鸦,但在其他情况下处理按钮按下/滑动,我如何实现键盘,从而显示涂鸦覆盖视图
--编辑--
我试图通过覆盖触摸开始/移动/结束/取消
方法将事件转发给下一个响应者来解决此问题。如果我点击一个按钮,然后点击另一个,我可以得到一个涂鸦出现在两者之间。然而,我仍然无法在按钮上画出任何东西作为按钮之间的涂鸦。有人有更好的主意吗
--编辑#2--
当前,我的视图层次结构设置如下:
UIView
(从UIInputViewController
)
子视图:所有我的按钮,然后我的ScribbleView
覆盖子视图
如果我在我的ScribbleView
中将userInteractionEnabled
设置为true,我可以使Scribble显示在任何地方,而不管起始位置如何,但随后我将失去按钮功能
至于源代码,我一直在试验传递触摸事件等的各种配置,但代码的主体可以在这里找到:。我在这里猜测,因为我还没有尝试使用UIInputViewController。但是,对UIButton进行子类化,然后覆盖触摸开始:withEvent:
和触摸结束:withEvent:
方法,以便将这些事件转发给UIInputViewController怎么样?我认为您需要将ScribbleView交互设置为Enabled为YES,并转发到您不想要的触摸事件下面的按钮。例如,如果您识别出在同一地点长按或轻触,则您知道用户想要按下按钮。肯定是一个选项,但我不确定这将如何与我附加到每个按钮上的手势识别器一起工作。但是,如果没有人想到更聪明的方法,那么值得一试。因为你在按钮之间(而不是按钮上)涂鸦,这不只是视图层次的问题吗?我是说,你不是在按钮下面画画吗?再说一遍,这只是一个猜测,因为我无法访问您的代码。或者,如果你喜欢乱画,你可以把一个空的UIView放在所有的按钮上面,然后在上面画,而不是在你现在画的地方画。