【发布时间】:2014-09-11 12:34:47
【问题描述】:
我正在用 Swift 为 iOS 8 编写自定义键盘扩展,但在实现 Swype 风格的涂鸦覆盖时遇到了麻烦。现在,我的键盘有一个基本的UIView(我的UIInputViewController 的view 属性),其中有许多UIButtons 对应于键盘上的键。这些键中的每一个都响应touchUpInside 事件,并具有UISwipeGestureRecognizers 在向上或向下滑动时输入辅助字符。我已经覆盖了touchesBegan:withEvent: 以将我的涂鸦覆盖视图添加为子视图,并覆盖touchesEnded:withEvent: 以删除我的UIInputViewController 中的涂鸦覆盖视图。
目前,如果我尝试从按钮之间的一些间距开始涂鸦,涂鸦覆盖视图会正确显示。但是,如果我从UIButton 顶部开始涂鸦,UIButton 会捕获触摸事件并且不会将其转发给我的UIInputViewController。
如何实现我的键盘,如果用户在按钮之间涂鸦,我的涂鸦覆盖视图会出现,但处理按钮按下/滑动?
--编辑--
我已尝试通过覆盖 touchesBegan/Moved/Ended/Cancelled 方法将事件转发给下一个响应者来解决此问题。如果我单击一个按钮,然后单击另一个按钮,我可以在两者之间出现一个涂鸦。但是,我仍然无法在按钮上绘制任何东西作为按钮之间的涂鸦。谁有更好的主意?
--编辑#2--
目前,我的视图层次结构是这样设置的:
UIView(来自UIInputViewController)
子视图:我的所有按钮,然后是我的 ScribbleView 覆盖子视图。
如果我在 ScribbleView 上将 userInteractionEnabled 设置为 true,则无论起始位置如何,我都可以在任何地方出现涂鸦,但随后我失去了按钮功能。
至于源代码,我一直在尝试各种传递触摸事件的配置等等,但代码主体可以在这里找到:https://github.com/Kamaros/ELDeveloperKeyboard。
【问题讨论】:
标签: ios uiview uibutton touch swift