欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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 右滑返回操作的两种方法,希望对大家有所帮助

上一篇:

下一篇: