隐藏UITableview自定义cell中UITexField的弹出键盘

以前点击空白隐藏键盘使用的都是

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    
    UITouch *touch = [touches anyObject];
    
    if (![touch.view isKindOfClass: [UITextField class]] || ![touch.view isKindOfClass: [UITextView class]]) {
        
        [self.view endEditing:YES];
        
    }
    
}

这次这个界面被UITableview铺满,UITextField在自定义cell中,不响应这个方法,事实上“UITableView是不会响应touchesBegan:方法的”。转而采用下面方法,在viewDidLoad中注册手势,然后在UIGestureRecognizerDelegate代理方法中检测touch.view,如果不是UITextField,则设置隐藏,这样做的好处是不会影响到UITableview其他行的点击事件

#pragma mark--
#pragma mark--UIGestureRecognizerDelegate
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if (![touch.view isKindOfClass: [UITextField class]]) {
        [self hideKeyBoard];
        return NO;
    }
    NSLog(@"shouldReceiveTouch = yes");
    return YES;
}

- (void)hideKeyBoard{
    //创建第0区第1行的indexPath
    NSUInteger newIndex[] = {0, 1};
    NSIndexPath *newPath = [[NSIndexPath alloc] initWithIndexes:newIndex length:2];
    //找到对应的cell
    PayCell *nextCell = (<span style="font-family: Arial, Helvetica, sans-serif;">MyTableViewCell</span> *)[self.tableView cellForRowAtIndexPath:newPath];
    
    [nextCell.numText resignFirstResponder];//numText就是UITextField
}


参考文章:1. http://www.tuicool.com/articles/fmaMnaN

2. http://blog.csdn.net/chen505358119/article/details/9118271


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值