Detectar evento de toque no UIScrollView E nos componentes do UIView [que é colocado dentro do UIScrollView]
Eu tenho UIViewController no meu projeto de storyboard simples IPad que contém UIScrollView que é colocado sobre toda a superfície (1024 x 768). Eu criei 3 arquivos XIB, que são UIViews, que meu aplicativo carrega no start in viewDidLoad e os adiciona ao UIScrollView. Cada um desses 3 arquivos XIB contém apenas um UIButton.
Esta é hierarquia:
~ UIViewController (UIViewControllerClass é classe para este UIViewController)
~~ UIScrollView (contém 3 UIViews idênticos)
~~~ UIView (UIViewClass é o dono do arquivo para este arquivo XIB)
~~~~ UIButton
Eu gostaria que meu UIViewControllerClass tome conhecimento de ambos: toque em qualquer lugar no componente UIScrollView E se o UIScrollView for tocado, se o UIButton dentro do UIView no UIScrollView for tocado, para ter informações de que exatamente esse botão é tocado.
Eu fiz IBAction dentro UIViewClass para toque em UIButton dentro UIView em UIScrollView e quando eu defino User Interaction Enabled = YES em todos os elementos (UIViewController, UIView e UIScrollView) este método é chamado como deveria.
Mas neste momento meu UIViewControllerClass não está ciente de que o toque ocorreu dentro do UIScrollView naquele UIButton. Eu fiz o reconhecedor de toque assim:
UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouch)];
touch.numberOfTouchesRequired = 1;
e adicionou-o ao componente UIScrollView. Desta forma eu sou capaz de detectar o evento de toque no componente UIScrollView no UIViewControllerClass, mas o manipulador de eventos de toque para UIButton no UIView que está dentro do UIScrollView não é mais chamado.
Então, eu preciso ter essas duas informações no UIViewControllerClass:
O toque no componente UIScrollView foi feitoToque no UIButton no UIView que está dentro do UIScrollView (se este botão foi tocado) foi feitoSuponho que anexar o reconhecedor de eventos de toque a todo o componente UIScrollView não seja uma solução, já que ele desativa todos os manipuladores de eventos de toque que eu escrevi dentro do UIViewClass.
Eu acho que a solução é que de alguma forma toques que são feitos em componentes no UIView dentro UIScrollView deve ser enviado para UIViewControllerClass, mas eu não encontrei uma maneira de fazer isso.
Se alguém puder me ajudar, ficarei muito grato. Desde já, obrigado.
[editar # 1: RESPOSTA por Zheng]
Toque gesto deve tercancelsTouchesInView opção definida comoNÃO!
Para o meu caso acima, esta linha resolve tudo:
touch.cancelsTouchesInView = NO;
Muito obrigado a Zheng.