Jim*_*y_m 13 objective-c uitableview uikit ios uitapgesturerecognizer
我试图忽略UITapGestureRecognizer在UITableView上点击以下内容:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UITableViewCellContentView class]]) {
return NO; // ignore the touch
}
return YES; // handle the touch
}
Run Code Online (Sandbox Code Playgroud)
它不会编译:"使用未声明的标识符'UITableViewCellContentView'
没有文档的课程?需要子类?更好的方法来完成这个?
谢谢你的帮助.
Jim*_*y_m 40
这似乎是这样做的:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if([touch.view isKindOfClass:[UITableViewCell class]]) {
return NO;
}
// UITableViewCellContentView => UITableViewCell
if([touch.view.superview isKindOfClass:[UITableViewCell class]]) {
return NO;
}
// UITableViewCellContentView => UITableViewCellScrollView => UITableViewCell
if([touch.view.superview.superview isKindOfClass:[UITableViewCell class]]) {
return NO;
}
return YES; // handle the touch
}
Run Code Online (Sandbox Code Playgroud)
小智 10
你可以这样做.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}else{
return YES;
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚遇到了这个问题,以下解决方案适用于所有iOS版本,没有Apple更改tableView视图层次结构的风险.Basicaly,保持对UITableView的引用:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if([touch.view isDescendantOfView:detailsTableView]) {
return NO;
}
return YES;
}
//isDescendantOfView:YES if the receiver is an immediate or distant subview of view or if view is the receiver itself; otherwise NO.
Run Code Online (Sandbox Code Playgroud)