반응형
UIScrollview가 터치 이벤트를 가져옵니다.
내 터치 포인트를 어떻게 감지 UIScrollView
합니까? 터치 대리자 메서드가 작동하지 않습니다.
탭 제스처 인식기 설정 :
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scrollView addGestureRecognizer:singleTap];
그리고 당신은 터치를 얻을 것입니다 :
- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{
CGPoint touchPoint=[gesture locationInView:scrollView];
}
고유 한 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];
}
scrollview 내부의 포인트에 대해 이야기하고 있다면 delegate 메소드로 연결할 수 있습니다.
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
메서드 내부에서 속성을 읽습니다.
@property(nonatomic) CGPoint contentOffset
scrollView에서 조정을 얻습니다.
이것은 터치 다운 이벤트에서도 작동합니다.
현재 정답으로 표시된 답변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
}
According to Apple's documentation the gestureRecognizer
does:
Ask the delegate if a gesture recognizer should receive an object representing a touch.
which means to me that I can decide if a gestureRecognizer
should recieve a touch or not.
참고URL : https://stackoverflow.com/questions/5216413/uiscrollview-getting-touch-events
반응형
'code' 카테고리의 다른 글
사용자 정의 UITableViewCell에서 자동 레이아웃이 무시됩니다. (0) | 2020.10.31 |
---|---|
PHP : 숫자 인덱스에서 연관 배열 키를 얻는 방법? (0) | 2020.10.31 |
사용하지 않고 C ++ 11에서 다중 스레드 안전 싱글 톤을 구현하는 방법 (0) | 2020.10.31 |
문자열에서 접두사 제거 (0) | 2020.10.31 |
forEach 루프 Java 8 for Map 항목 세트 (0) | 2020.10.31 |