我是Objective C的新手,在使用自定义UITableViewCell时遇到问题。
我在自定义tableviewcell中使用touchesBegan,如下所示:
#import "UserListTableViewCell.h"
@implementation UserListTableViewCell
@synthesize userTableViewCellView, cellIndex;
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
... .. ...
}
-(void) touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
... ... ...
}
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
... ... ...
}
然后,我将无法使用功能didSelectRowAtIndexPath {}。 即使使用touchesBegan方法,也如何使用TableView选择。
如果可以解决此问题,请提前通知我。
谢谢。
答案 0 :(得分:0)
如果在使用touchesBegan后didSelectRowAtIndexPath()无法正常工作,则可能需要检查自定义单元格方法中是否有[super touchesBegan]。像这样:
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
... .. ...
}
.....
希望对您有帮助!
答案 1 :(得分:0)
发生这种情况是因为方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
}
捕获事件,但不将其发送到响应者链的更上层。如上文@Daniel所述,如果您像这样向super
添加呼叫:
[super touchesBegan:touches withEvent:event];
事件将进一步发送到- (void)didSelectRowAtIndexPath
方法。