2

UIScrollView からタッチ位置を取得する必要があります。しかし、スクロールビューのサブクラスを作成すると:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  NSArray *touchesArray = [touches allObjects];
  UITouch *touch = (UITouch *)[touchesArray objectAtIndex:0];
  CGPoint point = [touch locationInView:self];
  self.position = point;}

関数touchesBeganは常に呼び出されるわけではありません。すばやくスワイプするtouchesBeganと、呼び出されることはありませんが、scrollViewDidScroll代わりに直接呼び出されます。

UIGesture (UITapGestureRecognizer, ... )ユーザーがタップやスワイプしないので使えません。

UIScrollView から位置を取得する他の方法はありますか?

編集 :

ありがとうThXou:https://stackoverflow.com/a/15763450/1752843

UIScrollView サブクラス:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    self.position = point;
    return self;
}
4

4 に答える 4

7

To detect the touch location inside scrollview, try this code

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scrollView addGestureRecognizer:singleTap]; 

- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
 { 
   CGPoint touchPoint=[gesture locationInView:scrollView];
 }
于 2013-04-02T11:13:16.303 に答える
3

scrollview.panGestureRecognizerの メソッドを使用locationInViewして、ビュー内のタッチの座標を取得することもできます。これはscrollView、要件に応じて、 のデリゲート メソッドのいずれかにある可能性があります。

于 2014-02-21T12:15:43.560 に答える
2

SOで答えを見たので、問題を解決できると思います。SDK はタッチ処理メソッドを UIScrollView サブクラスに渡さないようです。hitTest:そのため、タッチをサブクラスに渡すために a を実行する必要があります。

詳細については、回答を参照してください。

于 2013-04-02T11:54:46.473 に答える