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
Post a Comment