Перехватывать прикосновения прокрутки UITableView - PullRequest
0 голосов
/ 04 июня 2010

Можно ли контролировать, когда UITableView прокручивается в моем собственном коде.

Я пытаюсь получить поведение, когда прокрутка по вертикали и прокрутка по горизонтали передаются моему коду (тому много примеров)

НО

Я хочу, чтобы ДИАГОНАЛЬНОЕ пролистывание ничего не делало, т. Е. UITableView не должен даже начинать прокрутку.

Я пытался поймать это здесь

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

но scrollView.contentOffset.x всегда равно 0, поэтому я не могу обнаружить горизонтальное движение.

Я также попытался создать подкласс UITableView и реализовать

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

и т.д ..

но UITableView (и я предполагаю, что это родительский UIScrollView) начинает прокручиваться до того, как касания уведомляются?

Чтобы повторить, я хочу, чтобы прокрутка UITableView была заблокирована, если был сделан диагональный удар, но для прокрутки по вертикали.

(Такое поведение можно увидеть в Tweetie (Twitter) для iPhone)

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 04 июня 2010

Если вы можете работать с 3.2 или более поздней версией, пакет UIGestureRecognizer должен разрешить это. Существует ряд вызовов, позволяющих некоторым жестам отменять или взаимодействовать с другими жестами, и вы должны иметь возможность создать собственный жест по диагонали, который отменяет другие жесты, но фактически ничего не делает сам.

До версии 3.2 обработка жестов UIScrollView практически не документирована. Вы можете обнаруживать касания, но не движения через стандартные вызовы touchesBegan UIResponder. Я думаю, что, обнаружив движение, он запустит цикл выполнения и перехватит все события, минуя обычную цепочку событий.

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

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