UITableView одиночные клики - PullRequest
       1

UITableView одиночные клики

0 голосов
/ 19 февраля 2012

У меня есть UITableView и UINavigationController, и я хотел бы различать два щелчка: 1) обычный щелчок, который выбирает строку, и 2) щелчок, который происходит ЛЮБОЕ в другом месте на экране (кроме кнопок на UINavigationController) , Я написал этот код:

singleTap = [[UITapGestureRecognizer alloc]
                                     initWithTarget:self action:@selector(singleTapHandler:)];
singleTap.numberOfTapsRequired = 1;

Однако проблема в том, что он переопределяет обычные щелчки, которые выбирают строку.

1 Ответ

1 голос
/ 19 февраля 2012

Я предполагаю, что вы устанавливаете распознаватель касаний либо на UIWindow, либо на единственное подпредставление окна. Вы должны дать распознавателю ответвления делегата, и этот делегат должен реализовать gestureRecognizer:shouldReceiveTouch:.

В этом методе вы хотите вернуть NO, если касание находится в кнопке или если касание находится в ячейке табличного представления, и YES в противном случае. Вам нужно пройти вверх по иерархии представлений, начиная с представления, в котором приземлился сенсорный экран, и найти любой из этих классов.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    for (UIView *view = touch.view; view; view = view.superview) {
        if ([view isKindOfClass:[UIButton class]])
            return NO;
        if ([view isKindOfClass:[UITableViewCell class]])
            return NO;
    }
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...