在我的应用程序中,我有一个表格视图,其中有两个文本字段。当出现带有选择器的弹出窗口时,其中一个文本字段出现。现在,当用户从弹出窗口完成时,大多数用户点击后台将其关闭。即使我在弹出框中放置了一个完成按钮,用户也不情愿地轻拍背景。所以当我点击背景时,弹出消失了。但是当我想编辑其他文本字段时,我必须点击它两次才能进入编辑模式。就像当呈现弹出窗口时,它下方有一层,当它消失时,图层会保持不变,直到我第二次点击它让它离开。有谁熟悉这个?
答案 0 :(得分:0)
当拾取器出现时,您可以在背景上创建透明的UIButton,这样当用户点击背景时,您可以准确指定要发生的事情。
答案 1 :(得分:0)
我建议您阻止背景以强制用户通过弹出窗口解除
在显示popover的视图控制器中......
//when the popover is presented
UIView* view = [[UIView alloc] initWithFrame:self.view.bounds];
popOver.passthroughViews = @[view];
[self.view addSubview:view];
//when the popover is dismissed
[[self.view.subviews lastObject] removeFromSuperview];
(这假设viewController的self.view
是你想要阻止的背景)
类似地,您可以使用viewController中的选择器实现视图覆盖按钮:
UIButton* button = [[UIButton alloc] initWithFrame:self.view.bounds];
[button addTarget:self action:@selector(clicked:) forControlEvents:UIControlEventAllEvents];
popOver.passthroughViews = @[button];
[self.view addSubview:view];
我认为那是你已经尝试过的?缺少的成分是passthroughViews
。默认情况下,后台交互是阻止,除了解除弹出窗口(这就是为什么你有“隐形图层”印象) - passthroughviews
允许您有选择地启用这些交互。