ios - Swipe gestures not working on UIScrollView and Subviews -


i'm trying recognize up/down swipe gesture on uiscrollview. scrollview supports pagination , each page has uiimageview subview of scrollview. i've tried create uiswipegesturerecognizers , associate them scrollview , subview uiimageview. neither works. why?

how can reliably swiping up/down work? requirement display banner(uiview) on top of scrollview when user swipe , dismiss when user swipe down.

this current implementation.

for (int = 0; < arrnews.count; i++) {      nsdictionary *anews = [nsdictionary dictionarywithdictionary:[arrnews objectatindex:i]];      cgrect frame;     frame.origin.x = self.viewscrollview.frame.size.width * i;     frame.size = self.viewscrollview.frame.size;      self.viewscrollview.pagingenabled = yes;      uiview *subview = [[uiview alloc] initwithframe:cgrectmake(frame.origin.x, 400, frame.size.width, 0)];     subview.backgroundcolor = [uicolor whitecolor];     subview.alpha = 0.9;     subview.tag = 999;      // background image     uiimageview *imgviewbackground = [[uiimageview alloc]initwithframe:frame];     imgviewbackground.image = nil;     [imgviewbackground sd_setimagewithurl:[nsurl urlwithstring:[[arrnews objectatindex:i] objectforkey:@"image"]] placeholderimage:[uiimage imagenamed:@"placeholderbanner"]];      // news title     uilabel *lblnewstitle = [[uilabel alloc]initwithframe:cgrectmake(10, 10, 230, 0)];     lblnewstitle.text = [anews objectforkey:@"title"];     lblnewstitle.font = [uifont boldsystemfontofsize:20];     lblnewstitle.numberoflines = 0;     lblnewstitle.linebreakmode = nslinebreakbywordwrapping;     [lblnewstitle sizetofit];     lblnewstitle.textcolor = [uicolor blackcolor];     [subview addsubview:lblnewstitle];      [subview setframe:cgrectmake(frame.origin.x, 400, frame.size.width, lblnewstitle.frame.size.height + 30)];     cgfloat screenhieght = [uiscreen mainscreen].bounds.size.height;     if(screenhieght>500){         [subview setframe:cgrectmake(frame.origin.x, self.view.frame.size.height - subview.frame.size.height, frame.size.width, lblnewstitle.frame.size.height + 30)];     }     else{         [subview setframe:cgrectmake(frame.origin.x, 480 - subview.frame.size.height, frame.size.width, lblnewstitle.frame.size.height + 30)];     }      // button     uibutton *btnup = [uibutton buttonwithtype:uibuttontypecustom];     btnup.frame = cgrectmake(277, 10, 30, 30);     [btnup setbackgroundimage:[uiimage imagenamed:@"uparrow"] forstate:uicontrolstatenormal];     btnup.backgroundcolor = [uicolor clearcolor];     btnup.tag = i;     [btnup addtarget:self action:@selector(btnuptapped:) forcontrolevents:uicontroleventtouchupinside];     [subview addsubview:btnup];       // swipe gesture , down     uiswipegesturerecognizer *swipegestureup = [[uiswipegesturerecognizer alloc] initwithtarget:self action:@selector(handleswipegesture:)];     swipegestureup.direction = uiswipegesturerecognizerdirectionup;     [imgviewbackground addgesturerecognizer:swipegestureup];      uiswipegesturerecognizer *swipegesturedown = [[uiswipegesturerecognizer alloc] initwithtarget:self action:@selector(handleswipegesture:)];     swipegesturedown.direction = uiswipegesturerecognizerdirectiondown;     [imgviewbackground addgesturerecognizer:swipegesturedown];      [self.viewscrollview addsubview:imgviewbackground];     [self.viewscrollview addsubview:subview];   }  self.viewscrollview.contentsize = cgsizemake(self.viewscrollview.frame.size.width * arrnews.count, self.viewscrollview.frame.size.height);  pagecontrol.numberofpages = arrnews.count; pagecontrol.currentpage = 0; 

you need implement delegate method

func gesturerecognizer(gesturerecognizer: uigesturerecognizer, shouldrecognizesimultaneouslywithgesturerecognizer othergesturerecognizer: uigesturerecognizer) -> bool {     return true } 

Comments