0

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

4

2 回答 2

0

You could create a transparent UIButton on the background when the picker comes up so that when the user taps on the background, you can specify exactly what is to happen.

于 2013-04-09T19:46:04.633 回答
0

我建议您阻止背景以强制用户通过弹出窗口关闭

在显示弹出框的视图控制器中......

//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];

(这假设viewControllerself.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允许你有选择地启用这些交互。

于 2013-04-09T21:25:34.840 回答