2012-01-04 6 views
1

かわいい質問、おそらくそれほど簡単な答え:別のビューの下のボタンにタッチするにはどうすればよいですか?

私はタッチを受ける必要がある明確な視点を持っています。 の下にあります。これはUIButtonです。私はタッチも受けたいと思っています(私が入ってこない理由で、下になければなりません)。ボタンが押された場合、私はクリアビューがタッチを受け取らないようにします。

どうすればいいですか?

EDIT:

最終解決:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 


    for (UIView * view in self.subviews) 
    { 
     if ([view isKindOfClass:[UIButton class]]) { 
      CGPoint pointInButton = [view convertPoint:point fromView:self]; 
      if ([view pointInside:pointInButton withEvent:event]) { 
       return view; 
      } 
     } 
    } 
    return [super hitTest:point withEvent:event]; 
} 
+0

クリアビューで 'userInteractionEnabled'をfalseに設定しようとしましたか? – aroth

+0

@aroth私もタッチを受けるには明確な視点が必要です。申し訳ありませんが、より具体的な質問(私は今編集する)です。 –

答えて

2

は、クリアな視界にUIButtonへの参照を与えます。クリアビューのpointInside:withEvent:メソッドをオーバーライドします。オーバーライドで、ポイントがボタンの内側にあるかどうかを確認します(pointInside:withEvent:をボタンに送信します)。ポイント内にポイントがある場合は、NOを返します。ポイントがボタンの外側にある場合は、return [super pointInside:point withEvent:event]です。

+1

追加の説明はこちら:http://stackoverflow.com/questions/1694529/allowing-interaction-with-a-uiview-under-another-uiview – aroth

+0

ありがとう!!これは素晴らしい答えです。私はちょっと働いたままになっています - 私が使っているコードがうまくいかない理由(あなたの質問に追加した理由)を言うことができたらどうでしょうか? –

+0

Aha ...この行で修正されました:CGPoint pointInButton = [ビューconvertPoint:point fromView:self];ありがとう:) –

関連する問題