我想用
和
捕获一些自定义方案的链接。为了理解它是如何工作的,我创建了一个简单的项目(在Objective-C中,对不起),其中包含一个包含自定义方案的本地html文件
Local Links
Local link
Local Image
MyScheme Links
Local link
Local Image在我的
,我将我的webView初始化如下:
static NSString *const kCustomScheme = @"myscheme";
- (void)viewDidLoad {
[super viewDidLoad];
self.webView.navigationDelegate = self;
[self.webView.configuration setURLSchemeHandler:[MySchemeHandler new] forURLScheme:kCustomScheme];
}现在,下面是我的自定义SchemeHandler
#import
#import
@interface MySchemeHandler : NSObject
@end@interface MySchemeHandler ()
@end
@implementation MySchemeHandler
# pragma mark - WKURLSchemeHandler callbacks
- (void)webView:(nonnull WKWebView *)webView startURLSchemeTask:(nonnull id)urlSchemeTask {
NSLog(@"startURLScheme");
if ([urlSchemeTask.request.URL.absoluteString containsString:kCustomScheme]) {
NSLog(@" --> scheme found");
} else {
NSLog(@" --> scheme not found");
}
}
- (void)webView:(nonnull WKWebView *)webView stopURLSchemeTask:(nonnull id)urlSchemeTask {
NSLog(@"stopURLScheme");
}
@end使用上面的代码,当我点击我的html页面的自定义链接时,没有任何反应。
我做错了什么?我看不出我的错误..。我是Objective-C的新手,或者,准确地说,在使用Android 10年后,我有点生疏了。所以如果你能帮我我会很高兴
发布于 2021-03-02 01:14:28
最后,我成功地捕获了我的自定义方案。
事实上,一旦通过IB创建了webView,我就无法更改它的配置。要做到这一点,唯一的方法是使用所需的配置以编程方式创建webView。
以下是生成的代码片段:
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
[config setURLSchemeHandler:[MySchemeHandler new] forURLScheme:kCustomScheme];
self.webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:config];
self.webView.navigationDelegate = self;
self.webView.allowsBackForwardNavigationGestures = YES;
[self.view addSubview: self.webView];https://stackoverflow.com/questions/66389618
复制相似问题