1

私の問題はタップ検出についてです。

私はuiviewcontrollerを持っていて、uiviewにいくつかのコントロールがあります(ラベル、ボタン、テーブルビュー、イメージビューなど)。

uibuttonをタップすると、小さなuiview(200x150)が表示され、ユーザーがsmallviewでuibuttonをタップすると、smallviewが非表示になります。

しかし、ユーザーが背景をタップした場合、uiviewを非表示にすることはできません。
このコードを試しました。

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

uiviewcontrolsビューで別のボタンをタップしても機能しません。

uiviewcontrolのuiviewを最初に反応させたいだけです。
私はfirstResponderについて考えていますが、最初に設定する方法がわかりません。

編集:私はそれがiPadのuiPopoverのように機能することを望みます。

4

3 に答える 3

1

「小さなビュー」を表示するときに、新しい透明な UIView を追加するのが正しいアプローチだと思います。タップが検出されたときに目的のセレクターをトリガーするには、その UIView に UITapGestureRecognizer を追加する必要があります。また、ビューが適切に配置されていることを確認する必要があります。小さなビューが一番上にあり、透明な UIView がすぐ下にあり、残りのビュー階層が透明な UIView の下にあります。

最後に、smallview を削除すると同時に、透明な UIView をビュー階層から削除する必要があります。

それは理にかなっていますか?

于 2012-03-06T18:30:20.803 に答える
0

あなたの(すなわちshareview)でbringingあなたの手を試してみるか、あなたの小さなビューの後ろにあなたのメインビューを送ってください。small viewto 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 に答える