2011-01-10 19 views
11

UIButtonがセットアップされ、いつものようにビューコントローラー内のアクションにフックされています。ちょうどそれ自体がうまく動作します。シングルタップジェスチャーがスーパービューに追加されたときにUIButtonが機能しない

は今、私はシングルタップを設定するには、私のビューコントローラに以下を追加しました:

- (void)viewDidLoad { 
[super viewDidLoad]; 
UITapGestureRecognizer * singleTapGesture = [[UITapGestureRecognizer alloc] 
              initWithTarget:self 
              action:@selector(handleSingleTap:)]; 
[self.view addGestureRecognizer:singleTapGesture]; 
[singleTapGesture release]; } 

、それがタップされたように、私はボタンをタップするたびに、それが見えますが、それはジェスチャー認識コードを発射しますボタン操作の代わりに

ボタンをタップしたときにボタンが機能し、ビューの他の場所をタップしたときにタップジェスチャーが機能するようにするにはどうすればよいですか?

答えて

1

アンドリュー、

ユーザーがUIオブジェクト以外の任意の場所をタップしたときに関数を呼び出すしたいと私には思えます。

私の提案は、スクリーンのサイズ(灰色のバーが表示されていると仮定して320x460)のカスタムボタンを作成して、IBのすべてのオブジェクトの背面に配置することです。この時間までに、ほぼ0%の不透明度を持つUIButtonを見ることができます。

そしてIBからカスタムボタンのセレクタオプションをファイル所有者にドラッグし、呼び出す機能を選択すれば、すべて完了です。

あなたのコードで、あなたがしようとしていたものよりも、その単純

+0

ありがとうございましたが、それはむしろうんざりしています。私はそれが最初にボタン(サブビュー)を処理してからスーパービューに行くべきであると私は思っています。なぜそれができないのか、それをするために間違っているのか分かりません。 – Andrew

8

は簡単な解決策

singleTapGesture.cancelsTouchesInView = NO; 
です
+2

これは私が必要としたものです。 –

関連する問題