手势影响uitableview的委托

       当使用UITableView时,有时候我们可能想要用户可以选中某行,还要用户点击tableview其他地方时自动隐藏键盘。一般的做法都是直接实现tableview的委托,并且在viewdidload里为tableview添加一个guesturerecorganizer.这时候问题就来了,添加的guesturerecorganizer会影响tableview的didselect的回调。解决方式是实现guesturerecorganizer的委托。使其在点击tableview的行时不执行。解决方案如下:

////////////////////////////////////////////////////////////
// UIGestureRecognizerDelegate methods

#pragma mark UIGestureRecognizerDelegate methods

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isDescendantOfView:autocompleteTableView]) {

        // Don't let selections of auto-complete entries fire the 
        // gesture recognizer
        return NO;
    }

    return YES;
}

或者

(注意:使用下方解决方案不能保证苹果公司不会更改类的名称。)

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return ![NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"];
}

你可能感兴趣的:(Class)