1

我的问题是关于水龙头检测。

我有一个 uiviewcontroller,uiview 上有一些控件(标签、按钮、tableview、imageview 等)

当我点击 uibutton 时,我会显示一个小的 uiview (200x150),如果用户点击 smallview 中的 uibuttons,我会隐藏 smallview。

但如果用户点击背景,我无法隐藏 uiview。
我试过这个代码..

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //NSLog(@"Touches began.");
    [self hideShareView];
}

如果我点击 uiviewcontrols 视图中的另一个按钮,它不起作用。

我只想让我的 uiviewcontrol 的 uiview 先做出反应。
我认为它与 firstResponder 有关,但我不知道如何首先设置它。

编辑:我希望它像 ipad 中的 uiPopover 一样工作。

4

3 回答 3

1

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

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

那有意义吗?

于 2012-03-06T18:30:20.803 回答
0

尝试使用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只有在您不希望主视图在打开 smallview 时执行任何操作时才能执行此操作

于 2012-10-18T06:56:46.213 回答
0

请看一下这个问题(how-to-make-a-superview-intercept-button-touch-events),它似乎确实高度相关。

于 2011-03-13T14:37:33.533 回答