3

基になる uiview がイベントを受け取ることができるように、touchesMoved 中にタッチ イベントをキャンセルする必要があります。以下のコメントを参照してください。

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

    for (UITouch *touch in touches)
    {

        if (touch.view == self.touchOverlay) {
            CGPoint touchLocation = [touch locationInView:touch.view];

            //perform checks on touch location and trip sensor if circumstances are met

            if (self.touchSensorTripped) {
                self.touchOverlay.userInteractionEnabled = NO;
                //NEED TO CANCEL THE TOUCH HERE SO THAT VIEWS UNDERNEATH CAN RECEIVE THE TOUCH EVENTS
            }

        }

    }
}

現在、基礎となるビューはタッチが終了するまでタッチ イベントを受け取りませんが、これでは遅すぎます。オーバーレイ ビューが無効になったら、タッチがまだ移動している間に、すぐに touchesMoved イベントの受信を開始する必要があります。これを行うには、コメントが上にある場所に何を挿入できますか?

4

1 に答える 1

0

テストアプリをいじってみたところ、呼び出し [[self superview]touchesMoved:touches withEvent:event];が単純なビュー階層で機能しているように見えました。スーパービューのtouchesMovedは、ビューがtouchesEndedになる前に必ず呼び出されました。スーパービューのタッチを呼び出すこの方法で時期尚早に移動しても、後で再度呼び出されることはありませんでした

于 2013-02-02T20:38:20.140 に答える