日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS之给WebView导航栏添加“返回”与“关闭”按钮

發布時間:2024/5/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS之给WebView导航栏添加“返回”与“关闭”按钮 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、需求說明
  • 在iOS開發中,不免有原生與H5的交互,比如說:從原生頁面的一個按鈕,點擊之后跳轉到了一個H5的頁面A,A頁面中又有一個按鈕,點擊之后,又加載了一個新的H5頁面B,從B點擊一個按鈕,又加載一個新的H5頁面C,如果此時我們點擊左上角的返回按鈕,會直接返回到我們的原生頁面。這樣的話,用戶的體驗很不好,我們需要對WebView進行添加按鈕事件的處理。
  • 此時,想要重新定制返回按鈕,想要從C頁面判斷是否還有上一級H5頁面可供返回,如果有上一級頁面還是H5,點擊左上角的返回則返回到B頁面,并且在B頁面的左上角加上一個關閉按鈕,這個關閉按鈕的作用主要是為了關閉所有的H5的頁面,直接返回到原生的頁面;如果不點擊關閉按鈕,還是點擊返回,則從B頁面返回到A頁面;再次點擊返回,則關閉了H5的頁面,回到了原生的頁面。
二、實現
  • 首先是初始化一個WebView:
@property (nonatomic,strong,readwrite) UIWebView *announceWebView;- (UIWebView *)announceWebView {if (!_announceWebView) {_announceWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, deviceScreenWidth, deviceScreenHeight)];_announceWebView.backgroundColor = MAIN_VIEW_COLOR;_announceWebView.scalesPageToFit = YES;_announceWebView.allowsInlineMediaPlayback = YES;_announceWebView.mediaPlaybackRequiresUserAction = YES;[self.view addSubview:self.announceWebView];}return _announceWebView; }
  • 其次,在導航欄的左邊添加一個自定義返回按鈕和關閉按鈕:
@property (nonatomic,strong,readwrite) UIBarButtonItem *returnButton; @property (nonatomic,strong,readwrite) UIBarButtonItem *closeItem;- (UIBarButtonItem *)returnButton {if (!_returnButton) {_returnButton = [[UIBarButtonItem alloc] init];UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];UIImage *image = [UIImage imageNamed:@"fanhui.png"];[button setImage:image forState:UIControlStateNormal];//這是一張“<”的圖片[button setTitle:@" 返回" forState:UIControlStateNormal];[button addTarget:self action:@selector(respondsToReturnToBack:) forControlEvents:UIControlEventTouchUpInside];[button.titleLabel setFont:[UIFont systemFontOfSize:17]];[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];[button sizeToFit];button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;button.contentEdgeInsets = UIEdgeInsetsMake(0, -15, 0, 0);button.frame = CGRectMake(20, 0, 40, 40);_returnButton.customView = button;self.navigationItem.leftBarButtonItem = _returnButton;}return _returnButton; }- (UIBarButtonItem *)closeItem {if (!_closeItem) {_closeItem = [[UIBarButtonItem alloc] initWithTitle:@"關閉" style:UIBarButtonItemStyleDone target:self action:@selector(respondsToReturnToFind:)];}return _closeItem; }
  • 兩個按鈕的點擊事件處理
- (void)respondsToReturnToBack:(UIButton *)sender {// 判斷當前的H5頁面是否可以返回if ([self.announceWebView canGoBack]) {// 如果可以返回,則返回到上一個H5頁面,并在左上角添加一個關閉按鈕[self.announceWebView goBack];self.navigationItem.leftBarButtonItems = @[self.returnButton, self.closeItem];} else {// 如果不可以返回,則直接:[self.navigationController popViewControllerAnimated:YES];} }- (void)respondsToReturnToFind:(UIBarButtonItem *)sender {[self.navigationController popViewControllerAnimated:YES]; }
  • 最后再用[self.announceWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:API_URL_ANNOUNCEMENT]]]加載出WebView界面內容以及實現相關的代理即可。

總結

以上是生活随笔為你收集整理的iOS之给WebView导航栏添加“返回”与“关闭”按钮的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。