アニメーション化された画面に表示されるサブビューがあり、それが画面に表示されている場合、タッチイベントを無視するようにスーパービュー(私の場合はバックグラウンドのビュー)が必要です。私はすべてを試しましたが、うまくいきません。
タッチイベントの受信を停止するようにスーパービューを「強制」する方法はありますか?
ありがとう!
あなたがスーパービューと言うとき、私はあなたがアニメーションビューのスーパービューを意味していると思います。Appleのドキュメントは、について非常にuserInteractionEnabled
具体的ではありませんが、falseに設定すると、特定のビューではタッチイベントが無効になりますが、サブビューでは無効にならないと思います。再帰的に行うことをお勧めします。ビューのすべてのタッチイベントを無効/有効にするために使用できるコードの例を次に示します。
- (void)setInteraction:(BOOL)allow onView:(UIView *)aView {
[aView setUserInteractionEnabled:allow];
for (UIView * v in [aView subviews]) {
[self setInteraction:allow onView:v];
}
}
次に、これをスーパービューで呼び出すことができます[self setInteraction:NO onView:[self superview]]
。もちろん、これにより、タッチイベントも無効になります。これは、スーパービューでタッチイベントを再帰的に無効にするためです。もちろん、いつでもタッチイベントを再度有効にすることができます[self setUserInteractionEnabled:NO]
。
また、AppleのUIViewクラスリファレンスには、一部のUIコンポーネントがこのメソッドをオーバーライドすると記載されています。
注:一部のUIKitサブクラスは、このプロパティをオーバーライドし、異なるデフォルト値を返します。このプロパティに異なる値を返すかどうかを判断するには、使用するクラスのドキュメントを参照してください。