在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 {
if ([self.announceWebView canGoBack]) {//判別以後的H5頁面能否可以前往
//假如可以前往,則前往到上一個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開發:給UIWebview導航欄添加前往與封閉按鈕】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!