2013-12-09 4 views
6

Я подклассифицирую UITableViewCell в моем UITableView. я сделал это примерно в тысячу раз до этого, но теперь я пытаюсь поймать этого делегата события:UITableViewCell didselectrow задержка события

- (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 

ответ

2

Когда клетка касании этот Invoke должен произойти:

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

didSelect вызывает только если вы действительно выбрали клетку, а не только повернутую Это. Также прикосновением вызывается несколько методов, таких как shouldHighlight и willSelect.

+0

Это происходит только тогда, когда ячейка подсвечивается после 1 секунды нажатия. Мне нужно, чтобы это произошло, когда я касался ячейки –

+1

. Что относительно shoudlHighlight? –

1

Прежде всего, убедитесь, что значение tableView.allowsSelection установлено на YES.

Звучит так, что UIView, который является подвидным, блокирует события касания.

Вы должны убедиться, что подкласс UIView не захватывает какие-либо события касания. Я хотел бы удалить любого из этих методов из вашего UIView подкласса:

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

При реализации этого метода я хотел бы также вернуться NO:

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

Вы действительно не должны быть перекрывая эти методы либо:

hitTest:withEvent: 
pointInside:withEvent: 

Если да, задайте вопрос, почему и удалите их.

+0

Я сделал все, что вы упомянули здесь, но это все равно то же самое –

+0

@ or azran Поместите код для подкласса UITableViewCell в вопрос. –

+0

код размещен здесь –

7

Возможно, вы добавите UITapGestureRecognizer на свой взгляд, когда вы коснулись его, первый ответ UITapGestureRecognizer.

+0

, который будет сулитоном, если я хочу понять это. –

+0

Если у вас есть представление UITapGestureRecognizer в представлении, установите для него метод распознавания.cancelsTouchesInView = false. – Harris

Смежные вопросы