tableView didSelectRowAtIndexPath方法不执行
最近做了一个登陆的页面,该页面主要有输入用户名,密码
为了方便用户有多个账号登陆,其实~~也是为了方便我们开发人要,可以避免每次输入一大串手机号。
对于每次登陆成功后,将手机号保存到NSUserDefault中,注意它支持的类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.
-(void)saveUserMobile:(NSString *)mobile { NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSMutableArray *mobileArray = [NSMutableArray arrayWithArray:[userDefaults objectForKey:@"mobileArray"]]; if(![mobileArray containsObject:mobile]) { [mobileArray addObject:mobile]; NSArray *newArray = [[NSArray arrayWithArray:mobileArray] sortedArrayUsingSelector:@selector(compare:)]; [userDefaults setObject:newArray forKey:@"mobileArray"]; } }
使用如下网址中的第三方,UITextField下拉填充类,https://github.com/keyf/AutocompletionTableView
然后遇到一个特别奇怪的问题,无论如何点击UITableView,怎么都没办法响应这个点击的动作
一开始以为是代码的问题,是不是被遮住了,没有找到问题。后来查找了相关资料,问题在于,我在登陆这个页面,使用了 UITapGestureRecognizer,为了让用户点击空白区域,可以隐藏输入键盘,而这个事件,挡住了UITableView 中的 didSelectRowAtIndexPath,解决办法,首先是在登陆界面的文件中,加入<UIGestureRecognizerDelegate>,并重写其中的shouldReceiveTouch方法
UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidenKeyboard)]; gesture.delegate = self; gesture.numberOfTapsRequired = 1; [self.view addGestureRecognizer:gesture]; #pragma mark - UIGestureRecognizerDelegate - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { // 输出点击的view的类名 NSLog(@"^ 1 1^^%@", NSStringFromClass([touch.view class])); // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件 if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) { return NO; } return YES; }