iOS 개발:didSelectRowAtIndexPath:방법 실효 해결 방법

2778 단어

문제 설명 및 해결 절차:


TableView 공백을 클릭하여 키보드를 종료하는 효과를 얻기 위해 컨트롤러에 UITApGestureRecognizer를 등록하여 클릭 이벤트를 식별하는데 코드는 다음과 같습니다.
 1 #pragma mark -        
 2 
 3 - (void)setupGestureRecognizer
 4 {
 5     //          
 6     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
 7     //                   
 8     tap.delegate = self;
 9     //              view
10     [self.view addGestureRecognizer:tap];
11     //       (         ,        )
12     [tap addTarget:self action:@selector(tapView)];
13 }
14 
15 - (void)tapView
16 {
17     [self.view endEditing:YES];
18 }

그러나 TableView를 클릭한 셀은 점프를 할 수 없음(UITAp Gesture Recognizer에 등록하기 전에는 가능), 모뎀 발견은 -(void)tableView: (UItableView*)tableView didSelectRowAtIndexPath: (NSIndexPath*)indexPath 방법에 들어가지 않았고, 원인을 찾은 후 제스처 식별기를 등록한 후 UITAp Gesturecognizer가 터치 이벤트를 캡처하여 터치 이벤트를 캡처한 것을 발견했습니다.UIGesture Recognizer Delegate 에이전트의 - (BOOL)gesture Recognizer: (UIGesture Recognizer *)gesture Recognizer should Receive Touch: (UItouch *)touch 방법은 특정한 상황에서 터치를 캡처할지 여부를 사용자 정의할 수 있습니다. 코드는 다음과 같습니다.
 1 # pragma mark - UIGestureRecognizerDelegate
 2 
 3 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
 4 {
 5     //   UITableViewCellContentView(    tableViewCell),    Touch  
 6     if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
 7         return NO;
 8     }
 9     
10     return  YES;
11 }

요약:


현재 본인의 경험을 보면 UItable ViewCell이 클릭에 응답하지 못하는 사건이 발생하면 다음과 같은 두 가지 이유를 가장 먼저 고려해야 한다.
4
  • UItableView의 에이전트를 현재 컨트롤러로 설정하지 않았습니다

  • 4
  • 제스처 식별기를 등록하면 응답자 체인에 문제가 생겼을 수도 있습니다. UIGestureRecognizer가 터치 이벤트를 캡처했습니다
  • 좋은 웹페이지 즐겨찾기