2010-09-29 3 views
3

У меня есть UIScrollView, который содержит любое количество эскизов, которые должны обнаружить событие касания, выполнить 3D-преобразование самостоятельно и вызвать метод делегата.Обнаружение касаний для слоев в UIScrollView

Единственная проблема, с которой я не могу справиться, - это определить, какой подслой используется. Я устанавливаю layer.name в число индексов, и подкласс UIScrollView получает событие касания. Теперь последнее оставшееся препятствие - это как сделать hitTest на подслоях, чтобы получить свойство name и voila!

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

Код я пытался (в моем UIScrollView подкласса):

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    if ([touches count] == 1) { 
     for (UITouch *touch in touches) { 

      CGPoint point = [touch locationInView:[touch view]]; 
      CALayer *alayer = [self.layer hitTest:point]; 
      if (alayer) NSLog(@"layer %@ touched",alayer.name); 
      else NSLog(@"layer not detected"); 

     } 
    } 
} 

Я получаю две ошибки компиляции. сначала предупреждение: метод hitTest не найден. а ошибка «запрос для имени участника» - это не структура или объединение ».

ответ

2

Звонок [scrollView.layer hitTest:touchPoint];. Возвращаемым значением будет слой, который был затронут. Если возвращаемый слой равен scrollView.layer, подслой не был использован.

+0

Оле, я думал о том же решении. Тем не менее, я получаю две ошибки компиляции с моим кодом, который я разместил выше. – cameron

+2

Вы, вероятно, не '#import '. –

+0

Вы правы, сэр! :Икс – cameron

 Смежные вопросы

  • Нет связанных вопросов^_^