(iphone) uiscrollview не прокручивается, даже если он получает событие touchesBegan / move / done - PullRequest
1 голос
/ 10 февраля 2011

Я установил scrollView.userInteractionEnabled в NO, чтобы superview ловил событие касания.

В соответствующее время из одного из моих пользовательских представлений класса, который я вызываю

scrollView.userInteractionEnabled = YES;
[scrollView touchesBegan: touches withEvent: event];
or moved/ended similarly.

Я вижу, что мой scrollView получает сообщения о событиях касания с моим отладочным выводом.
Но я не вижу, как это прокручивается?

contentSize достаточно большой, а scrollEnabled - этоДА.
(Когда я устанавливаю scrollView.userInteractionEnabled = YES при запуске, scrollView хорошо прокручивается)

например, мой подкласс UIScrollView имеет

- (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event
{
    SYSLOG(LOG_DEBUG, "MyScrollView touchesBegan");
    [self setUserInteractionEnabled: YES];
    [self setScrollEnabled: YES];
    [super touchesBegan: touches withEvent: event];
}
  • Редактировать

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

1 Ответ

0 голосов
/ 10 февраля 2011

Похоже, вы не можете просто передать касания и заставить их реагировать на них: (

Вам придется использовать метод [UIScrollView setContentOffset: animated:], чтобы самостоятельно переместить представление прокрутки.


Лучшим способом перехвата касаний может быть размещение представления перед видом прокрутки - возьмите любые касания, которые вы хотите прослушать, и затем передайте их следующему респонденту в цепочке.

Вы бы сделали подкласс UIView, который переопределял бы методы обработки касаний, что-то вроде:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    if (scrollViewShouldGetThisTouch)
        [self.nextResponder touchesBegan:touches withEvent:event];

}

и просто сделали бы это представление таким же фреймом, что и ваше представление прокрутки, но находились бы перед ним в интерфейсеКонечно!).

ИЛИ

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

...