Cordova 라이브러리를 사용하는 xamarin 앱을 작성하려고합니다. 나는 필자가 필요로하는 라이브러리 구성 요소에 대한 필자의 바인딩을 위해 노력해 왔으며, 지금까지는 잘 작동했다.Xamarin.iOS에서 기본 유형 및 프로토콜에 바인딩하는 방법
오늘 나는 흥미로운 문제에 부딪쳤다. CDVViewContainer
available here에서 webView: shouldStartLoadWithRequest:
메서드를 무시하려고했습니다.
Xamarin Binding Guide 및 Xamarin Advanced Binding guide을 살펴 보았습니다. 프로토콜은 인터페이스와 유사하게, 그리고 고급 바인딩 가이드에 도시 된 바와 같이
@interface UITextField : UIControl <UITextInput> {
}
는이를 바탕으로
[BaseType (typeof (UIControl))]
interface UITextField : UITextInput {
}
로 번역 것이라고이 주 모두, 나는
@interface CDVViewController : UIViewController <UIWebViewDelegate, CDVScreenOrientationDelegate>{
}
번역 에
[BaseType (typeof (UIViewController))]
interface CDVViewController : UIWebViewDelegate {
}
내 바인딩 라이브러리를 만들기 위해 시도 할 때, 나는
Cordova.cs(26,39): error CS0527L Type `MonoTouch.UIKit.UIWebViewDelegate' in interface list is not an interface.
를 얻을 나는 애플 사양을 확인하고 this is in fact a Protocol. 아무도 내가 뭘 잘못하고 있는지 알아낼 수 있습니까?
phonegap에 대한 네이티브 바인딩을 수행하려고 할 때, 그리고 많은 클래스에서 폼을 기본 클래스로 상속하고 여러 프로토콜을 구현할 때와 같이 불행합니다. 지금까지 살펴 보았던 가장 좋은 방법은 프로토콜의 모든 메소드를 바인딩 클래스 정의에 추가하는 것입니다. –
위의 클래스를 확장하려고하면 분명히 세그먼트 오류가 발생합니다 (http://stackoverflow.com/questions/15693762/monotouch-application-exits-unexpectedly-code-0-code-1-segmatation-fault-11). 클래스를 확장 할 때 기본 메서드를 호출하면 기본 메서드를 호출하는 원래 메서드가 다시 호출되는 것 같습니다. 세그먼트 화 오류가 발생할 때까지 반복합니다. –
아마도 나는 그 해답을 완전히 이해하지 못하고 있습니다. 사용자 정의 프로토콜을 채택하고 있으므로 동일한 API 정의에 프로토콜의 정의를 포함하는 경우에만이 기능이 작동한다고 말하는 것입니까? 나는 UIGestureRecognizerDelegate를 채택 중이며 같은 오류가 발생하지만 어셈블리의 바인딩을 내 바인딩 클래스에 복사했지만 여전히 오류가 해결되지 않습니다. – winnicki