ios - UITapGestureRecognizer on UILabels in subview of UIScrollView not working -


i have problem uitapgesturerecognizer on uilabels in content view in uiscrollview not calling it's methods.

the view hierarchy follows:

  • scrollview (uiscrollview)
    • contentview (uiview)
      • testlabel (uilabel) - here uitapgesturerecognizer attached

i have distilled code down example highlight problem

// set scrollview size - added in storyboad [scrollview setcontentsize:cgsizemake([arrayofverbs count]*self.view.frame.size.width, scrollview.contentsize.height)]; [scrollview setcancancelcontenttouches:yes]; // tried both yes , no [scrollview setpagingenabled:yes];  // add content view uiview *contentview = [[uiview alloc] initwithframe:cgrectmake(0, 0, scrollview.contentsize.width, scrollview.contentsize.height)]; [scrollview addsubview:contentview];  // add test uilabel uilabel *testlabel = [[uilabel alloc] initwithframe:cgrectmake(0, 0, 200, 100)]; [testlabel setbackgroundcolor:[uicolor redcolor]]; [testlabel settext:@"test touch"]; [testlabel setuserinteractionenabled:yes]; [contentview addsubview:testlabel];  // add gesture recogniser uitapgesturerecognizer *singletap = [[uitapgesturerecognizer alloc] initwithtarget:self action:@selector(playsound:)]; singletap.numberoftapsrequired = 1; [testlabel addgesturerecognizer:singletap]; 

and method tap gesture recogniser should call

- (void)playsound:(uitapgesturerecognizer *)sender {      nslog(@"play sound");      if(sender.state == uigesturerecognizerstateended)     {         int pronounnumber = [sender.view tag];         int examplenumber = (int)sender.view.frame.origin.x%(int)self.view.frame.size.width;          nslog(@"pronoun %i , example %i", pronounnumber, examplenumber);     } } 

this method never called when tried touch on uilabel.

i have tried setting property cancancelcontenttouches both yes , no on scroll view suggested thread, it's still not working.

the strange thing is, if add uilabel outside of scrollview, gesture recogniser works! problem occurs in contentview subview of scrollview.

i using auto-layout, if might difference?

thanks!

the scroll view has gesture recogniser. default, 1 gesture recognizer can handling touches @ 1 time. need make delegate of gesture , implement gesturerecognizer:shouldrecognizesimultaneouslywithgesturerecognizer: return yes. allow work @ same time scroll view.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -