ipad 点击collectionView某些cell不响应的问

2018-05-31  本文已影响0人  biyu6
问题描述:
    在ipad中,有一个页面是用UICollectionView做的瀑布流,在这个瀑布流上方有一个文本输入框,想要在点击UICollectionView时隐藏 输入框的键盘。
    给UICollectionView 添加了一个手势:
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(searchResultCollectionViewClick:)];
    [self.collectionView addGestureRecognizer:tap];

//执行手势的方法
- (void)searchResultCollectionViewClick:(id)sender{//点击了collectionView
    CGPoint pointTouch = [sender locationInView:_collectionView];
    NSIndexPath *indexPath = [_collectionView indexPathForItemAtPoint:pointTouch];
    //if (indexPath != nil){//如果点击的是瀑布流上的cell--- 执行点击事件---如果放开,会走两遍didSelectItemAtIndexPath:
     //   [self collectionView:_collectionView didSelectItemAtIndexPath:indexPath];
   // }
    if (self.clickSearchResultCollectionView) {//点击了瀑布流--落键盘用的block回调
        self.clickSearchResultCollectionView();
    }
}

然后bug出现了:
  测试页面上有2行,每行3个item;在点击每行的最后一个item时,竟然不跳转了;而其他的item都可以跳转,经查,在点击每行最后一个item时indexPath竟然为nil,太奇葩了。

解决方法:
    在添加手势时,加入这一行代码:
  tap.cancelsTouchesInView = NO;

cancelsTouchesInView 这个属性默认是YES,系统会识别手势,并取消触摸事件;当设置为NO的时候,手势识别之后,系统将触发触摸事件。



上一篇 下一篇

猜你喜欢

热点阅读