すべてのイベント(開始、移動、終了、キャンセル)CustomView
を独自に処理するUIViewサブクラス(この質問の目的で)があります。touches
私はまた、それと重なるUIButton
兄弟です。CustomView
たとえば、私のビュー階層は次のようになります。
- UIView(コントローラーのビュー)
- フレーム付きCustomView(0、0、300、300)
- フレーム付きUIButton(0、0、100、50)
ユーザーがUIButtonからドラッグした後、CustomViewでタッチイベントをキャプチャしたいと思います。デバッグログから、UIControlEventTouchDragExit
イベントがインターセプトするイベントであるように見えます(ただし、タッチがボタンから約100ピクセル離れるまで発生しませんが、この質問では重要ではありません)。
理想的には、ドラッグ終了イベントが発生すると、ボタンはタッチ移動イベントの受信を停止し、CustomViewはイベントを取得しtouchesBegan
(何らかの方法で自分で偽造する必要がある場合でも)、今後のすべてのタッチイベント(touchesMoved
など)はに送信されます。 CustomView。
次のことを試しましたが、効果がありません。
-(void)btnTouchDragExit:(id)sender
{
UIButton * btn = sender;
[btn resignFirstResponder];
[customView becomeFirstResponder];
}
UITouch
基になるオブジェクト(タッチイベント全体で一貫している)は、CustomViewを指すようにリターゲットされていないと思います。どうすれば目的の効果を達成できますか?