Как я могу обнаружить точки касания в моем UIScrollView
? Прикосновения методов делегирования не работают.
UIScrollview получает события касания
Ответ 1
Настройте распознаватель жестов:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scrollView addGestureRecognizer:singleTap];
и вы получите следующие штрихи:
- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{
CGPoint touchPoint=[gesture locationInView:scrollView];
}
Ответ 2
Вы можете создать свой собственный подкласс UIScrollview, а затем вы можете реализовать следующее:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"DEBUG: Touches began" );
UITouch *touch = [[event allTouches] anyObject];
[super touchesBegan:touches withEvent:event];
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"DEBUG: Touches cancelled");
// Will be called if something happens - like the phone rings
UITouch *touch = [[event allTouches] anyObject];
[super touchesCancelled:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"DEBUG: Touches moved" );
UITouch *touch = [[event allTouches] anyObject];
[super touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"DEBUG: Touches ending" );
//Get all the touches.
NSSet *allTouches = [event allTouches];
//Number of touches on the screen
switch ([allTouches count])
{
case 1:
{
//Get the first touch.
UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
switch([touch tapCount])
{
case 1://Single tap
break;
case 2://Double tap.
break;
}
}
break;
}
[super touchesEnded:touches withEvent:event];
}
Ответ 3
Если мы говорим о точках внутри scrollview, вы можете подключиться к методу делегата:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
и внутри метода, прочитайте свойство:
@property(nonatomic) CGPoint contentOffset
из scrollView, чтобы получить координацию.
Ответ 4
Это работает и при касании.
В текущем правильном помеченном ответе вы можете получить touch point
только при событии "Касание". Похоже, что это событие происходит только "пальцем вверх", а не внизом.
Из комментария yuf в том же ответе вы можете получить touch point
из базового представления также внутри UIScrollView
.
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch
{
CGPoint touchPoint = [touch locationInView:self.view];
return TRUE; // since we're only interested in the touchPoint
}
Согласно документации Apple documentation gestureRecognizer
делает:
Спросите делегата, должен ли распознаватель жестов получать объект, представляющий прикосновение.
для меня это означает, что я могу решить, должен ли gestureRecognizer
получать прикосновение или нет.