4

ビューコントローラのビューに機能するUIButtonがあります。

同じViewControllerのビューのボタン(これをtopViewと呼びます)の上にUIViewインスタンスがあります。条件が満たされた場合、すべてのタッチイベント(開始、移動、終了、キャンセル)をビューのnextResponderに転送します。

ただし、条件がトリガーされると、ボタンはイベントを受信しません。topViewを移動してボタンの上に置かないようにすると、ボタンは機能します(または、userInteractionEnabledプロパティをfalseに設定します)。topViewがボタンの上にある場合、ボタンは機能しません。ビューの下にボタンが見えるのでイライラします!

タッチイベントをnextResponderに送信して受信するには、View Controllerで何かする必要がありますか?

レスポンダーチェーンでできるすべてのドキュメントを読みましたが、まだ少し混乱しています。

4

1 に答える 1

6

ビューのnextResponderは、そのビューコントローラまたはそのスーパービューのいずれかです。セットアップのUIButtonもどちらでもないため、イベントを受信しません。

この状況では、イベントをnextResponderに転送する代わりに、オーバーライドpointInside:withEvent:してNOを返す必要があります。そうすれば、システムはあなたの見解がそこにさえないように振る舞います。ドキュメントによると、同じ効果を得るために、ビューでuserInteractionEnabledをNOに設定することもできます。

于 2011-03-01T03:50:19.423 に答える