7

UIView含む があり、ユーザーが をタップするたびUIScrollViewに「タッチダウン」イベントをキャプチャできるようにしたいと考えています。UIViewUIScrollView

私はすべての touchesBegan/Ended/Cancelled ハンドラーを含めようとしましたが、 main に含まれるUIViewController内をタップしても、それらのどれも起動されません。UIScrollViewUIView

これを達成するための最良の方法は何ですか?

4

4 に答える 4

2

UIView で、touchesBegan を実装します。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // assign a UITouch object to the current touch
    UITouch *touch = [[event allTouches] anyObject];

    // if the view in which the touch is found is myScrollView
    // (assuming myScrollView is the UIScrollView and is a subview of the UIView)
    if ([touch view] == myScrollView) {
        // do stuff here
    }
}

補足: UIView で userInteractionEnabled が YES に設定されていることを確認してください。

于 2010-04-08T03:00:02.770 に答える
1

hitTest:withEvent:UIView サブクラスに実装することもできます。このメソッドは、どのサブビューがタッチ イベントを受け取るかを決定するために呼び出されます。したがって、ここでは、ビューを通過しないすべてのイベントを追跡するか、サブビューから一部のイベントを非表示にすることができます。この場合、スクロールビューのユーザー操作を無効にする必要はないかもしれません。

このメソッドの詳細については、UIViewクラス リファレンスを参照してください。

于 2010-04-08T07:52:01.493 に答える
-3

スクロールビューなどのユーザー操作を無効にする必要があります...

scrollView.userInteractionEnabled = NO;

無効にすると、UIScrollView のスーパービューは touchesBegan イベントを取得します。

于 2010-04-08T07:31:04.083 に答える