如何通过大量控件检测uiview?

时间:2011-03-13 13:35:40

标签: iphone objective-c uiview tap first-responder

我的问题是关于点击检测。

我有一个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 个答案:

答案 0 :(得分:1)

我认为正确的方法是在显示“小视图”时添加新的透明UIView。您应该为该UIView添加UITapGestureRecognizer,以便在检测到点击时触发所需的选择器。此外,您必须确保视图排列正确,小视图位于顶部,透明UIView位于下方,视图层次结构的其余部分位于透明UIView下方。

最后,您应该确保在删除小视图的同时从视图层次结构中删除透明的UIView。

这有意义吗?

答案 1 :(得分:0)

答案 2 :(得分:0)

尝试bringing small view to front(即分享视图)you don't want your main view to perform any action when smallview is opened,或将您的主视图发送到您的小视图后面。

如果它仍然不起作用&amp; [<YOUR_MAIN_VIEW> setUserInteractionEnabled:NO]; 然后尝试

MAKE SURE,但{{1}}只有当您不希望主视图在打开小视图时执行任何操作时,您才能执行此操作