1

私はUIImageView(の要素ではなく)上にありUIScrollViewます。UIImageViewさて、タッチイベントをチェックするためにをサブクラス化し、touchesBegan:withEvent:メソッドをオーバーライドしました。そのメソッド内では、基本的に要素のUIImageView背後にサブクラス化されたものを送信します。UIScrollView(私は[self.super bringSubviewToFront: scrollView]これを達成するために使用します)。

私が欲しいのは、の現在のタッチイベントを要素に送信できるようにすることですUIImageViewUIScrollViewこれにより、ユーザーは指を離してもう一度タッチしてスクロールする必要がなくなります。私はすでに要素を呼び出そうとしtouchesBegan:withEvent:ましたが、何もしませんでした。UIScrollView

要素UIImageViewへのタッチをシミュレートできるように、誰かが何をすべきかについての考えを持っていますか?UIScrollView

サブクラス化されたオーバーライドされたメソッドは次のUIImageViewとおりです。

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
     [super touchesBegan: touches withEvent: event];

     ViewController* controller = [Singleton getSingleton].controller;
     [super bringSubviewToFront: controller.scrollView]; //Now scroll view is in the front

     [controller.scrollView touchesBegan: touches withEvent: event]; //Does nothing
}
4

1 に答える 1

3

サブクラスでオーバーライドする必要がありますhitTest:withEvent:UIImageView

(UIView*) hitTest: (CGPoint)point withEvent: (UIEvent*)event
{
    if([self pointInside:point withEvent:event]){
         ViewController* controller = [Singleton getSingleton].controller;
         [controller.view bringSubviewToFront: controller.scrollView];
         return controller.scrollView;
    }else{
         return [super hitTest:point withEvent: event];
    }
}

このように、 へのタッチUIImageViewが発行されると、最初にこのメソッドが呼び出され、UIScrollViewが前面にUIScrollView表示され、イベントを処理するオブジェクトとして が返されます。

于 2013-01-06T18:33:59.107 に答える