昨天发现一个问题:点击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)
}
如此解决问题。
网友评论