2011-03-13 6 views
1

私の問題は、タップ検出についてです。多くのコントロールでuiviewのタップを検出するにはどうすればいいですか?

私はのUIViewControllerを持っていると私は、ユーザーのタップ場合、私は、小さなのUIView(200×150)を表示uibuttonをタップするとUIViewの上のいくつかのコントロール(ラベル、ボタン、テーブルビュー、ImageViewの、等。)

があります小さなビューのuibuttons私は小さなビューを非表示にします。

しかし、ユーザーが背景をタップすると、私はuiviewを隠すことができません。私はこのコードを試してみました
..私はuiviewcontrolsビュー内の別のボタンをタップすると

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

は、それが動作しません。

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

編集:ipadのuiPopoverのように動作します。

答えて

0

this question (how-to-make-a-superview-intercept-button-touch-events)をご覧ください。関連性が高いようです。

+0

smallviewが開かれたときに、任意のアクションを実行するために、あなたのメインビューを望んでいない場合にのみ、あなたがこれを行うことができMAKE SURE & you don't want your main view to perform any action when smallview is openedが、その後

[<YOUR_MAIN_VIEW> setUserInteractionEnabled:NO]; を試してみてください動作しますが、しない場合

すべての解決策、しかし、彼らは私のために働かなかった。私のuiviewcontrolsはラベル、ボタン、uitableview、イメージビュー、uiscrolviewを持っています。私のsmallview(shareView)が見えて、私のviewcontrollersの任意のuilabelをタップすると、私はタップイベントをキャッチすることができます。しかし、私がuitable、button、srollview、または私のサブクラスの他のインスタンスをタッチすると、このイベントでキャッチタップイベントを実行できなくなります: - (void)touchesBegan:(NSSet *)はwithEvent:(UIEvent *)イベントに触れます。それはUIPopOverのように機能しなければならない。 – kodcu

1

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

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

それは意味がありますか?

0

bringingsmall view(つまりshareview)to frontで手を入れようとするか、小さな画面の後ろにメインビューを送信してください。それはまだ私が試した

関連する問題