UITableViewController и обнаружение касаний - PullRequest
0 голосов
/ 30 января 2010

У меня есть UITableViewController и я хочу обнаруживать касания.

По сути, я хочу, чтобы пользователь мог удерживать нажатие в течение 3 секунд, а когда он отпустил, я хочу открыть маленькое представление с несколькими опциями для таблицы.

Я пробовал это ...

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 self.lastTouch = [event timestamp];
 NSLog(@"TLC.touchesBegan:touchBeginEndInterval %f", self.lastTouch);
}  

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
 NSTimeInterval touchBeginEndInterval = [event timestamp] - self.lastTouch
 NSLog(@"TLC.touchesEnded:touchBeginEndInterval %f %f", self.lastTouch, touchBeginEndInterval);
}

И это совсем не касается моих прикосновений ...

Есть идеи, как лучше всего это реализовать?

Ответы [ 3 ]

1 голос
/ 30 января 2010

TableViews имеют своего рода «сенсорный» метод делегата. Реализуйте этот метод для вашего делегата tableView:

// What happens when a row is touched
- (void)tableView:(UITableView *)table didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}

Не следует заставлять их нажимать в течение 3 секунд ... просто используйте стандарт.

0 голосов
/ 08 августа 2014

Теперь это легко сделать с помощью UILongPressGestureRecognizer:

-(void)viewDidLoad{
    [super viewDidLoad];
    UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressHandlerMethod:)];
    [self.tableView addGestureRecognizer:longPressRecognizer];
}
-(void)longPressHandlerMethod:(UIGestureRecognizer *)gestureRecognizer{
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[gestureRecognizer locationInView:self.tableView]];
    ...
}
0 голосов
/ 30 января 2010

Предполагая, что код поступил из вашего UITableViewController подкласса ... UIViewController s не получают методы, подобные touchesBegan:withEvent. Только UIResponder s, как UIView, и его подклассы, такие как UITableView. Итак, вы пытаетесь получить прикосновения не в том месте.

Чего ты пытаешься достичь? Вы хотите отвечать на прикосновения в UITableView или UITableViewCell? В последнем случае вы можете иметь дело с касаниями в вашей пользовательской реализации ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...