解雇popOver

时间:2013-04-09 19:42:53

标签: ios objective-c uitextfield uipickerview uipopover

在我的应用程序中,我有一个表格视图,其中有两个文本字段。当出现带有选择器的弹出窗口时,其中一个文本字段出现。现在,当用户从弹出窗口完成时,大多数用户点击后台将其关闭。即使我在弹出框中放置了一个完成按钮,用户也不情愿地轻拍背景。所以当我点击背景时,弹出消失了。但是当我想编辑其他文本字段时,我必须点击它两次才能进入编辑模式。就像当呈现弹出窗口时,它下方有一层,当它消失时,图层会保持不变,直到我第二次点击它让它离开。有谁熟悉这个?

2 个答案:

答案 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允许您有选择地启用这些交互。