iOS重寫系統中的UINavigationController返回按鈕的事件
以下主要幫助朋友們監聽iOS系統的UINavigationController返回按鈕的事件,主要有兩種方案
第一種方案就是大家都能想到的,也是最簡單的,程式碼如下:
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
}
因為,點選導航條的返回按鈕後,首先觸發的事件就是當前頁面消失,變得不可見,這確實是一個行之有效的方案。
第二種方案就是重寫系統中的UINavigationController返回按鈕監聽事件,具體程式碼和實現說明如下:
1.擴充套件UIviewController UIViewController+BackButtonHandler.h #import <UIKit/UIKit.h> @protocol BackButtonHandlerProtocol <NSObject> @optional // Override this method in UIViewController derived class to handle 'Back' button click -(BOOL)navigationShouldPopOnBackButton; @end @interface UIViewController (BackButtonHandler) <BackButtonHandlerProtocol> @end UIViewController+BackButtonHandler.m檔案 #import "UIViewController+BackButtonHandler.h" @implementation UIViewController (BackButtonHandler) @end 2.擴充套件UINavigationController ,也可以繼承 使用 @implementation UINavigationController (ShouldPopOnBackButton) - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem*)item { if([self.viewControllers count] < [navigationBar.items count]) { return YES; } BOOL shouldPop = YES; UIViewController* vc = [self topViewController]; if([vc respondsToSelector:@selector(navigationShouldPopOnBackButton)]) { shouldPop = [vc navigationShouldPopOnBackButton]; } if(shouldPop) { dispatch_async(dispatch_get_main_queue(), ^{ [self popViewControllerAnimated:YES]; }); } else { // Workaround for iOS7.1. Thanks to @boliva - http://stackoverflow.com/posts/comments /34452906 for(UIView *subview in [navigationBar subviews]) { if(subview.alpha < 1.) { [UIView animateWithDuration:.25 animations:^{ subview.alpha = 1.; }]; } } } return NO; } @end 3.測試使用 #import "ViewController.h #import "UIViewController+BackButtonHandler.h" @implementation ViewController -(void) viewDidLoad { [super viewDidLoad]; self.title = [NSString stringWithFormat:@"Screen-%d", self.navigationController.viewControllers.count]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStylePlain target:selfaction:@selector(onNextBtn:)]; } -(void) onNextBtn:(id)sender { [self.navigationController pushViewController:[ViewController new] animated:YES]; } -(BOOL) navigationShouldPopOnBackButton ///在這個方法裡寫返回按鈕的事件處理 { //這裡寫要處理的程式碼 [self.navigationController popViewControllerAnimated:YES]; return YES;//返回NO 不會執行 }
具體怎麼選擇看個人需要,希望能幫助到各位!
相關推薦
iOS重寫系統中的UINavigationController返回按鈕的事件
以下主要幫助朋友們監聽iOS系統的UINavigationController返回按鈕的事件,主要有兩種方案 第一種方案就是大家都能想到的,也是最簡單的,程式碼如下: -(void)viewWillDisappear:(BOOL)animated{ [super v
iOS 攔截導航欄返回按鈕事件(只攔截點選事件不改變系統按鈕樣式)
#import <UIKit/UIKit.h> @protocol BackButtonHandlerProtocol <NSObject> @optional /** 重寫下面的方法以攔截導航欄返回按鈕點選事件,返回 YES 則 pop,NO 則不 pop @
IOS系統監聽返回按鈕處理方式
pushHistory(); window.addEventListener("popstate", function(e) { alert("我監聽到了瀏覽器的返回按鈕事件啦");//根據自己的需求實現自己的功能 }, false);
監聽瀏覽器返回按鈕事件
監聽 app tlist alert 自己的 div listener 實現 rip pushHistory(); window.addEventListener("popstate", function(e) { /
HTML5 瀏覽器返回按鈕/手機返回按鈕事件監聽
手機 鎖定 listitem con 按鈕 spa color cnblogs java 1.HTML5 History對象 支持使用pushState()方法修改地址欄地址,而不刷新頁面。 popstate事件 當history實體被改變時,popstate事件將會發生
ionic3 導航欄返回按鈕事件設定 多級頁面返回到指定的頁面
借鑑原文地址 多級頁面返回到指定的頁面 export class Page { @ViewChild(Navbar) navBar: Navbar; ① ionViewDidLoad() { ② this.navBar.backButtonCli
監聽微信返回按鈕事件
開發很多時候針對不同的機型會有不同的差異,安卓一般左上方只有關閉按鈕,而iphone則有返回和關閉兩個按鈕; 如何監聽微信返回按鈕的點選事件,請看以下程式碼: $(function(){ //
js監聽微信瀏覽器返回按鈕事件
pushHistory(); window.addEventListener("popstate", function(e) { alert("好嗨喲,感覺到達了人生巔峰!");//根據自己的需求實現的功能 }, false); function pushHistory()
如何監聽小程式返回按鈕事件?
寫在前面 為了能及時的將自己踩到的前端坑(包括ionic,angular,react,ReactNative,小程式,APICloud)分享給大家,以後會逐漸將文章轉移到微信公眾號:前端e家(front_e_family)。可直接掃碼關注,公眾號會不定期更新新文
iOS 攔截系統自帶的Pop事件
攔截系統自帶的Pop事件 首先,在開發中我遇到一個問題,用故事版將控制器連線起來,之後就有了系統自帶的返回按鈕(大家都知道,說的很直白)。 當我想點選返回按鈕的時候,根據自己的情況再確定反不反回上一個控
js獲取瀏覽器返回按鈕事件
前面要加上jquery 比如<script src="style/jquery.min.js"></script> 監聽事件 jQuery(document).ready(function($) { if (window.history &
監聽頁面返回事件或者移動端返回按鈕事件
sta lis tle tor tlist 需求 url () history pushHistory(); window.addEventListener("popstate", function(e) { // pushHistory();
vue 專案中 如何動態監聽瀏覽器以及iOS手機微信自帶的返回按鈕的事件
vue搭建的頁面中,左上角的返回按鈕,我自己定義了返回的了路徑,可是當執行時,就會發現,蘋果手機的下方會有自帶的返回按鈕(安卓手機沒有),那麼這個按鈕的返回事件該如何設定呢? 一般情況下,微信自帶的返回按鈕都是返回上一個路徑,可是當我的頁面時使用者掃碼進入的,沒有上一條路徑
點選返回按鈕只能返回某一個 明確的頁面(主要是處理 ios 中 web的)
非 ios 下面的一般程式碼如下 pc 端或者 android webview沒有問題, 但是 ios 有問題 history.pushState(null, null, document.URL)
移動端開發在iOS系統中 new Date() 返回 NaN 的問題
問題: 通過 new Date() 函式將後臺返回的時間('2021-11-25')獲取時間戳。在 chrome 瀏覽器中沒有出現問題,但在 iPhone 真機測試的時候,顯示的結果不符合預期。通過除錯發現 iOS 中 new Date('2021-11-25') 返回的結果是 NaN,問題出現的原因是
iOS導航欄 修改系統返回按鈕
//設定系統返回按鈕不帶文字 [[UIBarButtonItemappearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSInt
Web丨IOS系統下Safari瀏覽器中div點選事件無效的解決辦法:
1、把 div 改換為 a、button 等具有可點選性的標籤元素,新增 curson:pointer 滑鼠樣式 2、把點選事件直接繫結到需要點選的標籤上,而不是其祖先級,儘量不要用事件委託 曾在兩個專案中適配 IOS 手機端 Safari 瀏覽器時遇
iOS 返回按鈕
tro tint button item 返回 self. set col uic UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init]; backItem.title =@"返回"; sel
關於微信手機端IOS系統中input輸入框無法輸入的問題
inpu input mil net 手機端 family 輸入 tails 覆蓋 把-webkit-user-select:none改成-webkit-user-select:auto;覆蓋掉或者直接註釋掉就行! 別人家的博文:http://blog.csdn.net
IOS修改Navigation Bar上的返回按鈕文本顏色,箭頭顏色以及導航欄按鈕的顏色
img attr .com add src hit con contain title 自從IOS7後UINavigationBar的一些屬性的行為發生了變化.你可以在下圖看到: 現在,如果你要修改它們的顏色,用下面的代碼: 1 2 3 4 self