Objective-C 코드 와 Javascript 코드 가 서로 인 스 턴 스 를 호출 합 니 다.
3125 단어 Objective-CJavascript호출
본인 은 프로젝트 에서 이 부분 기능 을 사용 하기 때문에 기록 을 하 세 요!
JS 호출 OC
많은 응용 프로그램 에서 웹 페이지 를 다소 호출 하여 화려 한 효 과 를 얻 었 습 니 다.이른바 JS 호출 OC..............................................................
버튼 을 누 르 면 화면 을 뛰 고 뛰 는 동작 은 OC 코드 로 이 루어 집 니 다.
OC 호출 JS
예 를 들 어 우리 OC 코드 는 사용자 이름 을 입력 하고 입력 이 완료 되면 웹 페이지 에 표시 하 며 사용자 이름 을 표시 하 는 입력 상 자 를 만 들 었 습 니 다.
1.webView 의 대리 방법 을 이용 하여 OC 와 JS 의 상호 호출 을 실현 합 니 다.
속성 생 성
@property(nonatomic,strong)UIWebView * webView;
웹 뷰 프로 토 콜 준수 UIWebView Delegate
-(void)webViewLoad{
NSURL * url = [[NSURL alloc]initWithString:@"http://www.baidu.com"];
self.webView = [[UIWebView alloc]initWithFrame:self.view.bounds];
NSURLRequest * request = [[NSURLRequest alloc]initWithURL:url];
self.webView.delegate = self;
[self.webView loadRequest:request];
[self.view addSubview:self.webView];
}
//JS OC
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSString * str = request.URL.relativeString;
if ([str isEqualToString:@"http://www.baidu.com/"]) {
NSLog(@" ");
}
return YES;
}
//OC JS
-(void)webViewDidFinishLoad:(UIWebView *)webView{
NSString * str = [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(""\"index-kw""\").value=""\"li""\""];
NSLog(@"webViewDidFinishLoad=%@",str);
}
2.제3자 의 프레임 워 크 를 이용 하여 실현 합 니 다(html 엔 드 와 통 일 된 방법의 이름 이 필요 합 니 다)
-(void)webViewBridge{
self.webView = [[UIWebView alloc]initWithFrame:[UIScreen mainScreen].bounds];
NSString * path = [[NSBundle mainBundle]pathForResource:@"ExampleApp.html" ofType:nil];
NSURL * url = [[NSURL alloc]initFileURLWithPath:path];
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
self.webView.delegate = self;
[self.view addSubview:self.webView];
//
[WebViewJavascriptBridge enableLogging];
//
self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView];
//
[self.bridge setWebViewDelegate:self];
//JS OC(testObjcCallback html )
[self.bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@" ");
self.view.backgroundColor= [UIColor blackColor];
responseCallback(@" ");
}];
}
//OC JS
-(void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"webViewDidFinishLoad");
[self.bridge callHandler:@"registerHandler"];
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PreferenceBundle에서 오른쪽 상단에 Respring 버튼을 클릭합니다.만나서 반갑습니다, Minazuki라고합니다. 프로필 이름 : Minazuki_dev Twitter : Repo : 아직 중학생이므로 말이 이상한 곳이 있습니다만 용서해 주세요… 🙏 theos (Mac이든 단품이든 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.