禁用用户交互或触摸UIView中的事件但仍启用子视图

时间:2016-11-03 03:45:55

标签: ios objective-c uiview

我有这样的UIView。

enter image description here

我需要将手指放在那个视图上,然后像弹钢琴那样拖动那些按钮。问题是如果初始触摸点在主视图上并且如果我拖动,则触发主视图的触摸事件并且不触发我的按钮触摸事件。

结果,我把它放了。

[self setUserInteractionEnabled:NO];

问题是它已禁用我的按钮和其他子视图。我想完全忽略触摸事件,主视图中的用户交互,但允许所有这些子视图。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以为keyboardWillShow和superView的目标函数集[self setUserInteractionEnabled:NO];内部设置通知事件,并在keyboardWillHide通知重新启用它时。要隐藏键盘,您可以使用 GO 按钮或关闭键盘,在调用keyboardWillShow事件时向屏幕的其余部分添加不可见的UIButton并使用它来辞职第一响应者

希望这有帮助。

答案 1 :(得分:0)

您应该为主视图创建UIView的子类。它应该覆盖- hitTest:withEvent:,始终返回密钥的最近视图。

没有继承的替代解决方案是为所有键提供一个不可见的边框,使得它们的视图覆盖整个主视图但从不返回主视图。