您的位置:首页 > 其它

WebKit(导航)

2015-12-02 15:58 501 查看
WebKit(展示Web界面)

WebKit(WKScriptMessageHandler)

WebKit(WKUIDelegate)

WebKit(WKNavigationDelegate)

WebKit(刷新)

WebKit(导航)

WebKit(浏览记录)

WebKit(进度条)

在上一篇博文《WebKit(刷新)》讲解了刷新网页。接下来讲解网页前进和后退功能。

1 WekWebView导航相关

在WekWebView中有管理页面前进后后退的属性和方法。

// 能否回到上一页
@property (nonatomic, readonly) BOOL canGoBack;

// 回调上一页
- (nullable WKNavigation *)goBack;

// 能否去往下一页
@property (nonatomic, readonly) BOOL canGoForward;

// 跳转到下一页
- (nullable WKNavigation *)goForward;


2 实现导航

2.1 强引用导航按钮

我们还是在UINavigationController添加相关按钮。

考虑到没有上一页和下一页时,给用户更好的视觉感受,导航按钮不可点。因此我们添加强引用的导航按钮。

@property (nonatomic, strong) UIBarButtonItem *goBackBarButtonItem;    ///< 上一页按钮
@property (nonatomic, strong) UIBarButtonItem *goForwardBarButtonItem; ///< 下一页按钮


2.2 创建导航按钮

改造initUIBarButtonItem()方法。

#pragma mark 初始化UIBar导航按钮
- (void)initUIBarButtonItem {
// 左边
self.goBackBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRewind target:self action:@selector(goBack:)];
self.goBackBarButtonItem.enabled = NO; // 不可点
self.goForwardBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward target:self action:@selector(goForward:)];
self.goForwardBarButtonItem.enabled = NO;
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:self.goBackBarButtonItem, self.goForwardBarButtonItem, nil];
// 右边
UIBarButtonItem *reloadItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(reload:)];
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:reloadItem, nil];
}


2.3 实现导航方法

在导航的时候,为了安全,我们先判断一下能否跳转,再执行跳转操作。

#pragma mark 上一页
- (void)goBack:(id)sender {
if ([self.webView canGoBack]) {
[self.webView goBack];
}
}

#pragma mark 下一页
- (void)goForward:(id)sender {
if ([self.webView canGoForward]) {
[self.webView goForward];
}
}


2.4 导航按钮能否点击

为了给用户更好的感觉,我们应该让用户直观的感觉到按钮能否点击。

改写WKNavigationDelegate协议的
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation
方法。

#pragma mark 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation {
NSLog(@"%s",__FUNCTION__);
if (!self.webView.loading) {
self.navigationItem.title = webView.title; // 页面标题
// 上一页按钮和下一页按钮是否可点
self.goBackBarButtonItem.enabled = [self.webView canGoBack];
self.goForwardBarButtonItem.enabled = [self.webView canGoForward];
}
}


在这里当页面加载完成时,还同时将网页的标题设为navigationItem.title。

运行项目即可测试导航效果。

其他

源代码

Objective-C

参考资料

WebKit Framework Reference

文档修改记录

时间描述
2015-12-02博文完成
2015-12-12更改链接

版权所有

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974/Blog
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: