2013-04-30 28 views
3

我有UIViewController与自定义UIView里面(让我们称之为VC和按钮)。当按钮被触摸时,它的边界和中心随着动画的变化而变化(它变得更大并且提供了几个选项供选择,在选择它调整大小后)。我想知道如何“检测”(并消除该触摸的默认动作)触摸按钮外(仅用于“隐藏”按钮,特别是使按钮调整为默认较小的尺寸)。通用的方式来检测外部UIView框架

有没有什么通用的方法可以做到这一点? VC在视图内有很多对象(表格视图,按钮,文本字段,用quartzcore制作的自定义图表等等),在按钮的“大模式”期间,我是否需要阻止所有这些元素的“交互性”?

回答

3

添加具有框架CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)为第一子视图一个UIButton你MAINVIEW (self.view),选择添加到该按钮(@selector(backgroundTap)),现在加上所有其他子视图像UITableViewUIButton等(根据您的需求量)。现在,只要点击不存在子视图的空白区域,就会调用backgroundTap选择器。

12

你可以继承什么都查看您正在使用和扩展

​​

在文档

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/hitTest:withEvent更多将通过实施对应于视图触摸坐标:

在去年的一些WWDC视频中提出了这种实现方法

+0

只是为了增加这个答案,如果你的屏幕有导航栏,y除非直接将视图添加到self.view.window,否则在按导航栏时不会调用hitTest – marmor 2013-07-22 14:40:58