我的UIViewController里面有一个自定义的UIView(让我们称之为VC和按钮)。当触摸按钮时,它的边界和中心随动画变化(它变得更大,并提供一些选项供选择,在选择它后调整后)。我想知道如何“检测”(并忽略该触摸的默认动作)按钮外的触摸(只是为了“隐藏”按钮,特别是使按钮调整大小为默认的较小尺寸)。
我能做到这一点的通用方式吗? VC在其视图中有很多对象(表视图,按钮,文本字段,使用quartzcore制作的自定义图表等),我是否需要在按钮的“大模式”期间阻止所有这些元素的“交互性”? / p>
答案 0 :(得分:12)
您可以继承您正在使用的视图,并通过实现扩展与视图中的触摸相对应的坐标
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
在文档中阅读更多内容
去年的一些WWDC视频中提出了这种实施方式
答案 1 :(得分:3)
将具有框架CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)
作为第一个子视图的UIButton添加到主视图(self.view)
,向此按钮添加选择器(@selector(backgroundTap))
,现在添加所有其他子视图,例如UITableView
,UIButton
等(根据您的要求)。现在,只要您点击没有Subview的空白区域,就会调用backgroundTap选择器。