UIScrollview и подпрограммы сенсорных событий управления - PullRequest
1 голос
/ 09 марта 2011

У меня есть основной вид.Я поместил объект UIScrollView в качестве подпредставления основного представления.У меня есть расширенный класс от UIView, который управляет сенсорными событиями.Этот класс моделирует своего рода прозрачную доску, на которой пользователь может нарисовать путь.Я создаю объект из своего расширенного класса UIVIew и добавляю его в качестве подпредставления UIScrollView.

Я выполняю этот процесс с использованием файла Inspector и .xib.

Тогда нетСобытие touch попадает в объект UIScrollView.Независимо от того, снимаю ли я флажок «Взаимодействие с пользователем включено» для моего расширенного класса UIView в Инспекторе.Я также пробовал:

[[self nextResponder] touchesBegan:touches withevent:event];

или

[[self.superview nextResponder] touchesBegan:touches withevent:event];

или

 [super touchesBegan:touches withEvent:event];

или

[super touchesBegan:touches withEvent:event];

в методах touchEventsмоего расширенного класса UIView.Мне не удалось получить сенсорные события в UIScrollView.

С другой стороны, если я добавлю scrollView и мой расширенный класс UIView программно, поддерживая ту же иерархию, UIScrolView получит сенсорные события, но не его подпредставление (мой расширенный класс UIView).

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

Возможно ли, в данном случае, я объясняю, выбрать какой, UIScrollView или мой UIViewрасширенный класс, должны слушать сенсорные события?

Ответы [ 2 ]

1 голос
/ 09 марта 2011

UIScrollView имеет свойство scrollEnabled.Если вы установите его на YES, прокрутка будет прокручиваться.Если нет, события будут перенаправлены вверх по цепочке респондента.Поэтому попробуйте изменить это свойство.

Прочитайте документы для UIScrollView!

Что касается разницы между настройкой пера по сравнению с XCode, настройкой кода и версией перане совсем соответствуют какой-то важный путь.Я не вижу твоего пера или твоей программной настройки, поэтому не могу тебе в этом помочь.

0 голосов
/ 31 июля 2013

Вам необходимо включить взаимодействие с пользователем для просмотра с прокруткой:

[self.scrollView setUserInteractionEnabled:YES];

Добавить gestRecognizer к подпредставлению:

for (int i = 0; i < pos.count; i++) {
        SCVerticalBarsChartBarView *bar = [[SCVerticalBarsChartBarView alloc]initWithBlaBlaBla];
        [bar addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(someAction:)]];
        bar.tag = i;
        [self.scrollView addSubview:bar];            
    }

И определить прослушиваемое представление:

-(void)someAction:(UITapGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateEnded) {
    if ([recognizer.view isKindOfClass:[SCVerticalBarsChartBarView class]]) {
        SCVerticalBarsChartBarView *tmpButt=(SCVerticalBarsChartBarView *)recognizer.view;
        NSLog(@"%d", tmpButt.tag);
    }
  }
}
...