iOS中UITableViewCell未运行didSelectR

2019-03-07  本文已影响0人  _compass

昨天发现一个问题:点击UITableViewCell,没有运行didSelect:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     
}

这种问题有几种可能:

1.allowSelection设置为了NO
2.未加delegate=self
3.给UITableView添加了guesture

第三种情况,要么用touchEnd代替guesture,也可以使用下面方法解决:

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch *)touch {
   if([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {

   // 如果当前是tableView
   
   return NO;
   }
   return YES;
}

也可以用touchEnd代替gesture.

在解决了不能点击的问题之后,如果cell上有UILabel,UITextField,又会出现点击之后颜色变透明的问题。

解决方法就是在UITableViewCell里重写layoutSubviews
例如:

    override func layoutSubviews() {
        super.layoutSubviews()
        self.separatorLineUp.backgroundColor = UIColor.black
        self.separatorLineDown.backgroundColor = UIColor.init(red: 0.4, green: 0.4, blue: 0.4, alpha: 1.0)
    }

如此解决问题。

上一篇 下一篇

猜你喜欢

热点阅读