Ios 如何有条件地拦截触摸事件?

Ios 如何有条件地拦截触摸事件?,ios,uiview,uibutton,touch,swift,Ios,Uiview,Uibutton,Touch,Swift,我正在用Swift为iOS 8编写一个自定义键盘扩展,但在实现Swype样式的涂鸦覆盖时遇到了问题。现在,我的键盘有一个基本的UIView(myUIInputViewController的view属性),它有许多与键盘上的键相对应的ui按钮。这些按键中的每一个都响应touchUpInside事件,并具有UISweepGestureRecognitors,可在上下滑动时输入辅助字符。我已覆盖了触摸开始:withEvent:以将我的涂鸦覆盖视图添加为子视图,并覆盖了触摸结束:withEvent:以删

我正在用Swift为iOS 8编写一个自定义键盘扩展,但在实现Swype样式的涂鸦覆盖时遇到了问题。现在,我的键盘有一个基本的
UIView
(my
UIInputViewController
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放在所有的按钮上面,然后在上面画,而不是在你现在画的地方画。