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;
}

转载于:https://www.cnblogs.com/elsonpeng/p/5685568.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值