UIWebview에서 WKWebview로 변경하면서 js함수 호출시 비동기식으로 호출되는 것을 알 수 있다.
그런데 이전 웹 코드가 동기식으로 해야 동작하는 경우가 생길 수 있다.
이 경우 아래와 같이 동기식으로 호출되도록 처리할 수 있다.
@interface WKWebView(SynchronousEvaluateJavaScript)
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
@end
@implementation WKWebView(SynchronousEvaluateJavaScript)
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
{
__block NSString *resultString = nil;
__block BOOL finished = NO;
[self evaluateJavaScript:script completionHandler:^(id result, NSError *error) {
if (error == nil) {
if (result != nil) {
resultString = [NSString stringWithFormat:@"%@", result];
}
} else {
NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
}
finished = YES;
}];
while (!finished)
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
return resultString;
}
@end
/*
[ 사용 방법 ]
NSString *msg = @"test message";
NSString *param = [NSString stringWithFormat:@"alert('%@')", msg];
[self.webView stringByEvaluatingJavaScriptFromString:param];
*/
2020/12/10 - [iOS/Objective-C] - 웹뷰에서 javascript 함수 동기식 호출
2020/12/10 - [iOS/Tips] - Fat Static Library 빌드 (2/2)
2020/12/10 - [iOS/Tips] - Fat Static Library 빌드 (1/2)
2020/12/10 - [iOS/Tips] - Custom UserAgent 설정
2020/12/10 - [iOS/Tips] - CocoaPods 설치 및 제거
2020/12/10 - [iOS/Tips] - Clang diagnostic 경고 무시하기
2020/12/10 - [개발노트] - Bluetooth UUID
2020/12/08 - [개발노트] - 모바일 앱 메모리덤프 이슈 해결방법
2020/12/08 - [프로그래밍/Java Script] - Android, iOS 앱 설치여부 체크 및 스토어 이동
2020/08/21 - [Android/Tips] - aab파일 apk파일로 변환
2020/08/11 - [iOS/Swift] - WKWebView 화면 출력 완료 이벤트
2020/08/06 - [iOS/Tips] - 개발관련 폴더 경로
'개발 > iOS' 카테고리의 다른 글
bundle id 알아내기 (0) | 2020.12.14 |
---|---|
UIViewController 스위칭 (0) | 2020.12.11 |
Fat Static Library 빌드 (2/2) (0) | 2020.12.10 |
Fat Static Library 빌드 (1/2) (1) | 2020.12.10 |
Custom UserAgent 설정 (0) | 2020.12.10 |