国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

Android NavigationController 右滑手勢詳解

2020-07-26 03:34:34
字體:
來源:轉載
供稿:網友

蘋果一直都在人機交互中盡力做到極致,在iOS7中,新增加了一個小小的功能,也就是這個api:self.navigationController.interactivePopGestureRecognizer.enabled = YES;

這個api功能就是在NavigationController堆棧內的UIViewController可以支持右滑手勢,也就是不用點擊右上角的返回按鈕,輕輕在屏幕左邊一滑,屏幕就會返回,隨著ios設備屏幕的增大,這個小功能讓手指短,拇指大和手殘人士看到了福音。

這個功能是好,但是經常我們會有需求定制返回按鈕,如果手動定制了返回按鈕,這個功能將會失效,也就是自定義了navigationItem的leftBarButtonItem,那么這個手勢就會失效。

解決方法找到兩種

1.重新設置手勢的delegate

復制代碼 代碼如下:

self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

2.當然你也可以自己響應這個手勢的事件

復制代碼 代碼如下:

[self.navigationController.interactivePopGestureRecognizer addTarget:self action:@selector(handleGesture:)];

有更多方法以后繼續補充,這里可以根據自己需要進行選擇,如果只是簡單定制了返回按鈕,第一種最簡單,一句代碼搞定。

問題二:ios開發 向右滑動手勢實現返回.在NavigationController中如何設置

在navigationController中實現向右滑動 返回功能

系統提供的backbarbuttonitem,不用添加任何代碼即可實現向右滑動后退功能,但是往往要對按鈕修改樣式等時,就需要自定義leftbarbuttonitem,此時向右滑動即失效.通過下面方法即可解決該問題.(本人親自實驗過)

主要是通過設置navigationController.interactivePopGestureRecognizer 此手勢的一些屬性,此手勢大家可以通過sdk查看說明,這里不細說

1. self.navigationController.interactivePopGestureRecognizer.enabled = YES | NO;      手勢有效與否

2. self.navigationController.interactivePopGestureRecognizer.delegate = self;               手勢的代理,一般會設置為self

1中的屬性,再viewcontroller中默認的設置為YES,即手勢有效.按照2中的屬性設置后,當前的viewcontroller即可以實現該向右滑動后退功能,但是當回到navigationController的rootView中再次做出向右滑動時,程序會有問題(再次push子controller時,程序卡在當前界面無法跳轉).有效解決方案如下:

說明:有兩個controllerA,B

navigationController的rootview設置為A,在A中點擊按鈕后push B.在A的 -(void)viewDidAppear:(BOOL)animated方法中加入self.navigationController.interactivePopGestureRecognizer.enabled = NO;代碼如下:- (void)viewDidAppear:(BOOL)animated{  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {    self.navigationController.interactivePopGestureRecognizer.enabled = NO;  //讓rootView禁止滑動  }}

然后再B中的- (void)viewDidLoad方法中加入

- (void)viewDidLoad{  // 配置返回按鈕  UIBarButtonItem * backItem = [self barButtonForImageNames:@[@"icon-返回", @"", @""] action:@selector(popBack)];  backItem.title = @"";  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {    self.navigationController.interactivePopGestureRecognizer.enabled = YES;    self.navigationController.interactivePopGestureRecognizer.delegate = self;  }  self.navigationItem.leftBarButtonItem = backItem;  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {    self.navigationController.interactivePopGestureRecognizer.delegate = self;   }}

這樣即可以保證再A中向右滑動后再次pushB時不會卡在A界面.

再項目中大家一般會創建風格統一的界面,一般都會創建一個基礎viewcontroller,再此viewcontroller擴展一個配置leftbarbutton的方法,在該方法中加入B的viewDidLoad中的代碼,這樣在創建leftbarbutton的同時,直接加了返回的操作(不用每個viewController中都加入這樣一段代碼).然后只在navigationController的rootView中加入A的(void)viewDidAppear:(BOOL)animated方法即可.

以上內容是Android NavigationController 右滑手勢詳解,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武清区| 威宁| 盐源县| 南阳市| 剑河县| 平塘县| 青神县| 永胜县| 辉南县| 利川市| 盐源县| 汨罗市| 咸宁市| 隆昌县| 甘肃省| 恭城| 普宁市| 永城市| 栾川县| 绥滨县| 新平| 琼海市| 泗洪县| 义乌市| 巧家县| 湾仔区| 甘德县| 兰坪| 云浮市| 大埔区| 且末县| 徐水县| 黄骅市| 杨浦区| 漯河市| 平利县| 黎城县| 淳安县| 清水河县| 开封县| 额尔古纳市|