2011-01-11 15 views
40

親ビューのuserInteractionEnabled = NOの場合、userInteractionEnabledプロパティがYESに設定されていてもサブビューはtouchイベントを受け付けません。親ビューでiOSでuserInteractionEnabledがNOに設定されている場合の接触方法

まだサブビューでタッチイベントを取得する方法はありますか?

+0

このソリューションを検討することができます:http://stackoverflow.com/a/35592676/913347 – ishahak

答えて

72

タッチがパススルーさせますが、そのサブビューがタッチを扱う与え、YESにそのビューにuserInteractionEnabledをしましょうと、代わりに、このスニペットを使用するビューを取得するには、次の

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    id hitView = [super hitTest:point withEvent:event]; 
    if (hitView == self) return nil; 
    else return hitView; 
} 

出典:http://cocoaheads.tumblr.com/post/2130871776/ignore-touches-to-uiview-subclass-but-not-to-its

+1

grea t ..ありがとう! – Antigluk

+1

この作品は、ありがとう! – MiMo

+0

plzには、その使用方法が記載されています。どこからこのメソッドを呼び出す必要がありますか? –

4

親ビューのuserInteractionEnabledプロパティをNOに設定すると、サブビューのuserInteractionEnabledプロパティも暗黙的にNOに設定されます。あなたが記述したアプローチを使用してサブビューにタッチイベントを表示する方法はわかりませんが、おそらく、ユーザーが対話したいビューをオーバーレイするだけのビューを作成できますが、それらの親ではありません再生回数

-1

を回避策は、親ビュー全体のユーザー操作を無効にするのではなく、ボタンなどのユーザー操作を無効にすることです。

関連する問題