UITableViewCell做了电子事件延迟

时间:2013-12-09 07:56:36

标签: ios iphone objective-c uitableview

我正在UITableViewCell中继承UITableView。我之前做了大约一千次,但现在我想抓住这个委托活动:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath;

当触摸单元格时,应该调用此回调。 但是我只是在触摸后按下6秒或6次,但不是每次触摸都会调用。

tableview是子类UIView的子视图,我在awakeFromNib中调用它:

-(void)awakeFromNib{
_table_view.delegate = self;
_table_view.dataSource = self;
}

tableview自己画得很好,但这个事件效果不好。 任何想法?

这里是UITableViewCell子类代码.m

#import "FLBlockedPersonCell.h"

@implementation FLBlockedPersonCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}


- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{
    [super setHighlighted:highlighted animated:animated];
}



@end

3 个答案:

答案 0 :(得分:8)

也许您在视图上添加了UITapGestureRecognizer,当您触摸它时,UITapGestureRecognizer首次响应。

答案 1 :(得分:2)

当触摸单元格时,应该发生此调用:

-(void) tableView:(UITableView*) tableView didHighlightRowAtIndexPath:(NSIndexPath*) indexPath

只有在您真正选择了一个单元格时才会调用didSelect,而不仅仅是单击它。还有一些像shouldHighlight和willSelect这样的方法会在触摸时调用。

答案 2 :(得分:1)

首先,确保tableView.allowsSelection设置为YES

听起来我UIViewUITableView的子视图正在阻止触摸事件。

您需要确保UIView子类未捕获任何触摸事件。我会从UIView子类中删除任何这些方法:

touchesBegan:withEvent: 
touchesMoved:withEvent: 
touchesEnded:withEvent: 
touchesCancelled:withEvent:

如果你实现这个方法,我也会返回NO:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    return NO;
}

你真的不应该重写这些方法:

hitTest:withEvent:
pointInside:withEvent:

如果您是,请质疑原因并将其删除。

相关问题