iOS app 右滑返回操作的两种方法
程序员文章站
2023-12-18 20:25:10
前提条件,存在a和b两个页面,a是主界面,a push 到 b
方法一:如果b页面的返回按钮要用自定义的按钮(在ios7中,如果使用了uinavigationcontro...
前提条件,存在a和b两个页面,a是主界面,a push 到 b
方法一:如果b页面的返回按钮要用自定义的按钮(在ios7中,如果使用了uinavigationcontroller,那么系统自带的附加了一个从屏幕左边缘开始滑动可以实现pop的手势。但是,如果自定义了navigationitem的leftbarbuttonitem,那么这个手势就会失效。)
在a界面:
- (void)viewdidappear:(bool)animated { self.navigationcontroller.interactivepopgesturerecognizer.delegate = (id)self;//重新设置代理 self.navigationcontroller.interactivepopgesturerecognizer.enabled = no;//本页面不能右滑 }
在b里面:
设置返回按钮:
uibutton *backbtn = [uibutton buttonwithtype:uibuttontypecustom]; backbtn.frame = cgrectmake(5, 2, 21, 35); [backbtn setimage:[uiimage imagenamed:@"back"] forstate:uicontrolstatenormal]; [[backbtn rac_signalforcontrolevents:uicontroleventtouchupinside] subscribenext:^(id x) { [self.navigationcontroller popviewcontrolleranimated:yes]; }]; uibarbuttonitem *backitem = [[uibarbuttonitem alloc] initwithcustomview:backbtn]; self.navigationitem.leftbarbuttonitem = backitem; self.navigationcontroller.interactivepopgesturerecognizer.enabled = yes;//最重要的一步
方法二:在a页面里面(a页面里面的backbarbuttonitem其实就是我们看到的b页面的返回按钮,b页面的leftbar是左侧的按钮,注意优先级,b里面有自定义leftbar,显示b页面的,如果没有,看a界面,如果里面有backbarbuttonitem,显示,如果没有,就是系统默认的那个)
uiimage* image = [uiimage imagenamed:@"back"]; uibarbuttonitem *item = [[uibarbuttonitem alloc] init]; [item setbackbuttonbackgroundimage:[image resizableimagewithcapinsets:uiedgeinsetsmake(0, image.size.width, 0, 0)] forstate:uicontrolstatenormal barmetrics:uibarmetricsdefault]; [item setbackbuttontitlepositionadjustment:uioffsetmake(-400.f, 0) forbarmetrics:uibarmetricsdefault]; self.navigationitem.backbarbuttonitem = item; self.navigationitem.backbarbuttonitem = item;
我采用的是方法一,方法二我没有办法调整返回按钮的位置
总结
以上所述是小编给大家介绍的ios app 右滑返回操作的两种方法,希望对大家有所帮助