检测UIView框架外部触摸的通用方法

时间:2013-04-30 07:38:27

标签: ios uiview touch

我的UIViewController里面有一个自定义的UIView(让我们称之为VC和按钮)。当触摸按钮时,它的边界和中心随动画变化(它变得更大,并提供一些选项供选择,在选择它后调整后)。我想知道如何“检测”(并忽略该触摸的默认动作)按钮外的触摸(只是为了“隐藏”按钮,特别是使按钮调整大小为默认的较小尺寸)。

我能做到这一点的通用方式吗? VC在其视图中有很多对象(表视图,按钮,文本字段,使用quartzcore制作的自定义图表等),我是否需要在按钮的“大模式”期间阻止所有这些元素的“交互性”? / p>

2 个答案:

答案 0 :(得分:12)

您可以继承您正在使用的视图,并通过实现扩展与视图中的触摸相对应的坐标

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

在文档中阅读更多内容

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/hitTest:withEvent

去年的一些WWDC视频中提出了这种实施方式

答案 1 :(得分:3)

将具有框架CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)作为第一个子视图的UIButton添加到主视图(self.view),向此按钮添加选择器(@selector(backgroundTap)),现在添加所有其他子视图,例如UITableViewUIButton等(根据您的要求)。现在,只要您点击没有Subview的空白区域,就会调用backgroundTap选择器。