首页 > 解决方案 > iOS webview中的自定义BackButton

问题描述

我想在我的 iOS 网络视图(objective-C)的每个页面上创建自定义后退按钮。谁能建议我如何实施。在此先感谢我是 iOS Web 视图的新手,这就是为什么我直接发布我想要的这是我的代码:

#import "ViewController.h"

@interface ViewController () <UIWebViewDelegate>

@end

@implementation ViewController{

    __weak IBOutlet UIImageView *logoImage;

}

- (void)viewDidLoad     {
    [super viewDidLoad];

    self.webView.delegate = self;

    NSString *urlString = @"https://www.anything.com";
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:requestObj];

    self.webView.hidden = YES;
    if ([_webView canGoBack]) {
        [_webView goBack];
    }}

- (void)webViewDidStartLoad:(UIWebView *)webView {

}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    self.webView.hidden = NO;
    logoImage.hidden = YES;
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    NSLog(@"%@", error);
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end  

我正在传递我网站的 url,我想在我的应用程序的每个页面上显示一个后退按钮,以便用户可以转到上一页。我还有一个问题,每当我最小化我的应用程序并从最近的应用程序中打开它时,它会重新启动,而我希望它从同一屏幕恢复

标签: objective-c

解决方案


对于UIWebView,检查方法- (void)goBack;

对于WKWebView,检查方法- (WKNavigation *)goBack;- (WKNavigation *)goBack:(id)sender;退出。

更新

// init the back button
[btnBack addTarget:self action:@selector(backButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

- (void)backButtonTapped:(id)sender
{
     [self.webview goBack];
}

假设您已经在完整代码中设置了 webview 和后退按钮(在导航栏或其他地方)。

  1. 当当前(标签)页面有历史列表并且当前页面 url 不是第一个最后一个时,浏览器可以返回。

  2. 确保你真的想进入goBackviewDidLoad它需要一些时间来完成加载你指定的目标页面(https://www.anything.com),就像你在浏览器中做的那样。

  3. webview的方法loadRequest是异步的,它将url请求推送到webview并立即返回。

  4. 将 webview 的goBack方法绑定到您的自定义后退按钮,如上面的代码片段。

  5. 尝试点击初始页面中的https://www.anything.com示例goBack链接[self.webview canGoBack]

  6. backButtonTapped如果需要,在方法的实现中设置断点。

  7. 在您的下一个问题中删除logoImage或其他不相关的代码问题,这会使您的问题更加清晰和有用。


推荐阅读