은 무엇 당신이 찾고있는 것은, 그것을 요약, 명시 적으로 자바 스크립트로 목표 - C 클래스를 노출 할 필요가 기본적으로 (reference)
"자바 스크립트에서 오브젝티브 C 메소드 호출"참조 문서입니다 환경. WebScripting
비공식 프로토콜은 사용자 정의 개체가이 작업을 수행 할 수 있도록 노출되도록 구현하려는 프로토콜입니다.
자바 스크립트에 노출하려는 객체 (예 : "알림 객체")가 + (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector;
및 + (BOOL)isKeyExcludedFromWebScript:(const char *)name;
을 구현하면 이제 웹 뷰의 컨트롤러/위임자가 객체를 자바 스크립트에서 사용할 수있게합니다.
당신의 웹보기 인스턴스의
프레임로드 위임에서 예를 들어
:
- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame {
// Create the Obj-C object you want JS to be able to access
CustomNotificationCenter *noteCenter = [CustomNotificationCenter sharedNotificationCenter];
// Get the script object that corresponds to "window" in JS
id win = [sender windowScriptObject];
// Add our noteCenter as a property of "window" called "customNotifications"
[win setValue:noteCenter forKey:@"customNotifications"];
}
을 그리고 정확하게 모든 일을 한 경우, 당신은 자바 스크립트에 목표 - C 객체를 사용할 수 있어야합니다. 당신이 노출 한 경우 예를 들어, 방법은 "printNotification :"이름 :
function messageReceived(messageText) {
window.customNotifications.printNotification_("Notification!" + messageText);
}
을 그리고 물론 당신은 당신의 정의를 Obj-C 객체의 통지를 보여 으르렁을 사용하여 noteCenter
하기 위해, 자바 스크립트에서이 작업을해야합니다 printNotification
의 구현입니다. (Mountain Lion에 가입 한 경우 새로운 알림 센터도 훌륭합니다.) 희망이 도움이됩니다.
감사합니다. CustomNotificationCenter *에는 몇 가지 문제가 있습니다. 구현 방법을 잘 모르기 때문입니다. 내 AppDelegate.h에 추가 : - (void) webView : (WebView *) webView didClearWindowObject : (WebScriptObject *) windowObject forFrame : (WebFrame *) frame; AppDelegate.m에 코드를 추가했으나 선언되지 않은 식별자 '노트 센터'를 사용하는 오류가 발생합니다. * – Seb123
@SebastianRuiz Oh - "CustomNotificationCenter"는 예제 용으로 사용 된 (존재하지 않는) 클래스입니다. 암호. 귀하의 경우에는 * 자신의 * 클래스를 생성하고, Growl과 통합하여 통지를 보내고, 그런 다음 내가 위장 클래스 "CustomNotificationCenter"를 노출 한 것과 같은 방식으로 Javascript에 노출시키는 기능을 제공하십시오. 도움이 필요하면 자유롭게 다른 질문을 게시하십시오! – Vervious
마운틴 라이온을 운영하고 있습니다.) 따라서 내장 된 알림 센터 (또는 허슬러기와 히스)를 사용할 수 있어야합니다. 나는 네가 한 말을 어떻게하는지 잘 모르겠다. 특히 통합. 예를 게시 할 수 있다면 그것을 좋아할 것입니다. 당신의 도움을 주셔서 대단히 감사합니다! – Seb123