UITableViewCell选择在目标C中不起作用

时间:2019-01-15 11:48:12

标签: ios objective-c uitableview

我是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选择。

如果可以解决此问题,请提前通知我。

谢谢。

2 个答案:

答案 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方法。