ios - 用WXWebComponent代碼創(chuàng)建一個(gè)新的web組件,出現(xiàn)以下問(wèn)題
問(wèn)題描述
我用weex本身提供的WXWebComponent代碼,從新寫(xiě)了一個(gè)自己的WebComponent,并添加了攔截Url請(qǐng)求的方法,暴露給weex文件使用。
問(wèn)題描述每次當(dāng)我從myWebView攔截Url跳到一個(gè)weex文件,再次pop回來(lái)的時(shí)候,再次點(diǎn)擊myWebView的時(shí)候,就沒(méi)辦法將callback事件返回給weex文件。并出現(xiàn)以下錯(cuò)誤提示
WeexDemo[23225:9905854] void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode
貼出我的webView攔截Url的部分代碼
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ if (_startLoadEvent) {NSMutableDictionary<NSString *, id> *data = [NSMutableDictionary new];[data setObject:request.URL.absoluteString ?:@'' forKey:@'url'];[self fireEvent:@'pagestart' params:data]; }NSString * urlAbsoluteString= [request.URL absoluteString]; NSArray <NSString *>*schemes = self.schemesCallBacks.allKeys; for (NSString *scheme in schemes) {NSError *error = nil;NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:scheme options:NSRegularExpressionCaseInsensitive error:&error];if (!error) { NSRange range = [regExp rangeOfFirstMatchInString:urlAbsoluteString options:NSMatchingReportProgress range:NSMakeRange(0, urlAbsoluteString.length)]; if (range.location != NSNotFound) {WXCallback callBack = self.schemesCallBacks[scheme];callBack(@{@'url': [request.URL absoluteString]});return NO; }} else { WXLog(@'created regExp error: %@', error);} } return YES;}
問(wèn)題解答
回答1:self.schemesCallBacks里存的value是WXCallback?建議換成WXKeepAliveCallback試試
