반응형
UITapGestureRecognizer를 사용할 때 탭한 자식보기 찾기
UIGestureRecognizers를 사용할 때 이벤트가 발생한 자식보기를 어떻게 알 수 있습니까?
문서에 따르면 :
제스처 인식기는 특정보기 및 해당보기의 모든 하위보기에 대해 적중 테스트 된 터치에서 작동합니다.
내가 볼 수있는 한, 'view'속성은
제스처 인식기가 연결된보기입니다.
상위 뷰가됩니다.
이벤트 위치에서 가장 안쪽의 하위보기를 찾습니다. (해당 하위 뷰에 대화 형 내부 개인 손자가있는 경우이 코드도 해당 항목을 찾습니다.)
UIView* view = gestureRecognizer.view;
CGPoint loc = [gestureRecognizer locationInView:view];
UIView* subview = [view hitTest:loc withEvent:nil];
Swift 2 :
let view = gestureRecognizer.view
let loc = gestureRecognizer.locationInView(view)
let subview = view?.hitTest(loc, withEvent: nil) // note: it is a `UIView?`
Swift 3 :
let view = gestureRecognizer.view
let loc = gestureRecognizer.location(in: view)
let subview = view?.hitTest(loc, with: nil) // note: it is a `UIView?`
미래 사용자를 위해 ... 세상이 더 이상 obj-c를 사용하지 않을 때 더 나은 옵션이 생겼습니다 ...
[sender view]
다음과 같이 사용하십시오.
UITapGestureRecognizer * objTapGesture = [self createTapGestureOnView:myTextField];
[objTapGesture addTarget:self action:@selector(displayPickerView:)];
//이 메소드 추가
-(void)displayPickerView:(UITapGestureRecognizer*)sender
{
UITextField *textField = (UITextField*)[sender view];
NSLog(@"tag= %ld", (long)textField.tag);
}
-(UITapGestureRecognizer*)createTapGestureOnView:(UIView *)view
{
view.userInteractionEnabled = YES;
UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc]init];
tapGesture.numberOfTapsRequired = 1;
tapGesture.numberOfTouchesRequired = 1;
[view addGestureRecognizer:tapGesture];
return tapGesture;
}
반응형
'IT Share you' 카테고리의 다른 글
Android M 권한 대화 상자가 표시되지 않음 (0) | 2020.11.09 |
---|---|
React-Router는 자식 하나만 (0) | 2020.11.09 |
소수 N이 주어지면 다음 소수를 계산할까요? (0) | 2020.11.09 |
부트 스트랩 3 : navbar에서 드롭 다운 링크의 헤드를 클릭 할 수있게 만드는 방법 (0) | 2020.11.09 |
자바 8 : 스트림 API로 목록 병합 (0) | 2020.11.09 |