我的问题是关于点击检测 .
我有一个uiviewcontroller,uiview上有一些控件(标签,按钮,tableview,imageview等) .
当我点击uibutton时,我会显示一个小的uiview(200x150),如果用户在smallview中点击uibutton,我会隐藏小视图 .
但是如果用户点击背景,我无法隐藏uiview .
我试过这段代码..
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
//NSLog(@"Touches began.");
[self hideShareView];
}
如果我点击uiviewcontrols视图中的另一个按钮,它将无法工作 .
我只是想让我的uiviewcontrol的uiview先做出反应 .
我认为它关于firstResponder,但我不知道如何设置它 .
编辑:我希望它像ipad中的uiPopover一样工作 .
3 回答
我相信正确的方法是在显示“小视图”时添加新的透明UIView . 您应该为该UIView添加UITapGestureRecognizer,以便在检测到点击时触发所需的选择器 . 此外,您必须确保正确排列视图,小视图位于顶部,透明UIView位于下方,视图层次结构的其余部分位于透明UIView下方 .
最后,您应确保在删除小视图的同时从视图层次结构中删除透明UIView .
那有意义吗?
请看this question (how-to-make-a-superview-intercept-button-touch-events),它看起来确实很相关 .
尝试使用
bringing
small view
(即分享视频)to front
或将您的主视图发送到您的小视图后面 .如果它仍然无效&
you don't want your main view to perform any action when smallview is opened
然后尝试[<YOUR_MAIN_VIEW> setUserInteractionEnabled:NO];
,但MAKE SURE
只有当您不希望主视图在打开小视图时执行任何操作时,才能执行此操作