ios10 にアップデートしたあたりから、UIWebViewの挙動がどうもおかしい。
不意に落ちたり、ほかのアニメーション実行中に落ちたりするような
よくわからないエラーが多数発生するようになった。
UIWebViewをどんだけいじってもらちがあかなさそうだったのでWKWebViewに思い切って変えてやろうと思った。
変更箇所は比較的少なくてすぐに変更はできた。 ライブラリーに WebKitを追加して
今はこれで動いているがまぁ問題があればそこでまた考えよう。
不意に落ちたり、ほかのアニメーション実行中に落ちたりするような
よくわからないエラーが多数発生するようになった。
UIWebViewをどんだけいじってもらちがあかなさそうだったのでWKWebViewに思い切って変えてやろうと思った。
変更箇所は比較的少なくてすぐに変更はできた。 ライブラリーに WebKitを追加して
# # cocos2d-x-3.13.1 # # cocos2d-x/cocos/ui/UIWebViewImpl-ios.mm #include "ui/UIWebViewImpl-ios.h" #include "renderer/CCRenderer.h" #include "base/CCDirector.h" #include "platform/CCGLView.h" #include "platform/ios/CCEAGLView-ios.h" #include "platform/CCFileUtils.h" #include "ui/UIWebView.h" #import// 追記 // 100行目あたり @interface UIWebViewWrapper () //変更 @property(nonatomic, retain) WKWebView *uiWebView; // 変更 // 120行目あたり - (void)dealloc { self.uiWebView.navigationDelegate = nil; // 変更 self.uiWebView.UIDelegate = nil; // 変更 [self.uiWebView removeFromSuperview]; self.uiWebView = nil; self.jsScheme = nil; [super dealloc]; } - (void)setupWebView { if (!self.uiWebView) { self.uiWebView = [[[WKWebView alloc] init] autorelease]; // 変更 self.uiWebView.navigationDelegate = self; // 変更 self.uiWebView.UIDelegate = self; // 変更 [self.uiWebView setOpaque:NO]; [self.uiWebView setBackgroundColor:[UIColor clearColor]]; } if (!self.uiWebView.superview) { auto view = cocos2d::Director::getInstance()->getOpenGLView(); auto eaglview = (CCEAGLView *) view->getEAGLView(); [eaglview addSubview:self.uiWebView]; } } // 220行目あたり - (void)evaluateJS:(const std::string &)js { if (!self.uiWebView) {[self setupWebView];} // [self.uiWebView stringByEvaluatingJavaScriptFromString:@(js.c_str())]; // コメントアウト // 以下を追記 コールバックは省略 [self.uiWebView evaluateJavaScript:@(js.c_str()) completionHandler:^(NSString *result, NSError *error){ NSLog(@"Error %@", error); NSLog(@"Result %@", result); }]; } - (void)setScalesPageToFit:(const bool)scalesPageToFit { if (!self.uiWebView) {[self setupWebView];} // self.uiWebView.scalesPageToFit = scalesPageToFit; // WKWebViewでは使わなさそうなのでとりあえずコメントアウト }
今はこれで動いているがまぁ問題があればそこでまた考えよう。
0 件のコメント:
コメントを投稿