私のアプリには、2 つのテキストフィールドを持つフォーム シート ビューがあります。ピッカーでポップオーバーをタップすると、テキストフィールドの 1 つが表示されます。ユーザーがポップオーバーを終了すると、ほとんどのユーザーは背景をタップして閉じます。ポップオーバーに [完了] ボタンを配置しても、ユーザーはしぶしぶ背景をタップします。背景をタップすると、ポップオーバーが消えます。しかし、他のテキストフィールドを編集したいときは、編集モードに入るために2回タップする必要があります。ポップオーバーが表示されているときのように、その下にレイヤーがあり、レイヤーが消えると、2回目にタップして離すまでレイヤーが残ります。これに詳しい人はいますか?
2 に答える
0
バックグラウンドをブロックして、ポップオーバーウィンドウからユーザーを強制的に閉じることをお勧めします
ポップオーバーを表示するView Controllerで...
//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 に答える
0
ピッカーが表示されたときに背景に透明な UIButton を作成して、ユーザーが背景をタップしたときに何が起こるかを正確に指定できるようにすることができます。
于 2013-04-09T19:46:04.633 に答える