如何解决如何使用打字稿
我尝试在GoogleMaps插件上实现2个委托,但没有找到在同一类上传递2个委托的方法!只有一个人代替这个地方!
第一位代表:
@NativeClass
class MapViewDelegateImpl extends NSObject implements GMSMapViewDelegate {
public static ObjCProtocols = [GMSMapViewDelegate];
private _owner: WeakRef<MapView>;
public static initWithOwner(owner: WeakRef<MapView>): MapViewDelegateImpl {
let handler = <MapViewDelegateImpl>MapViewDelegateImpl.new();
handler._owner = owner;
return handler;
}
...
}
第二位代表
@NativeClass
class MapVCDelegateImpl extends NSObject implements CLLocationManagerDelegate
{
public static ObjCProtocols = [CLLocationManagerDelegate];
private _owner: WeakRef<MapView>;
public lm: CLLocationManager = new CLLocationManager();
public static initWithOwner(owner: WeakRef<MapView>): MapVCDelegateImpl {
let handler = <MapVCDelegateImpl>MapVCDelegateImpl.new();
handler._owner = owner;
return handler;
}
...
}
主类:
export class MapView extends MapViewBase {
protected _markers: Array<Marker> = new Array<Marker>();
public _delegate: MapViewDelegateImpl;
private _indoorDelegate:IndoordisplayDelegateImpl;
private _mapVCDelegate:MapVCDelegateImpl;
constructor() {
super();
this.nativeView = GMSMapView.mapWithFrameCamera(CGRectZero,this._createCameraPosition());
this._delegate = MapViewDelegateImpl.initWithOwner(new WeakRef(this));
this._indoorDelegate = IndoordisplayDelegateImpl.initWithOwner(new WeakRef(this));
//this._mapVCDelegate = MapVCDelegateImpl.initWithOwner(new WeakRef(this));
this.updatePadding();
}
public onLoaded() {
super.onLoaded();
this.nativeView.delegate = this._delegate;
this.nativeView.indoordisplay.delegate = this._indoorDelegate;
this.notifyMapReady();
}
...
}
我已经尝试过几种思考,例如在_delegate
类上设置MapView
public _delegate:[MapViewDelegateImpl,MapVCDelegateImpl];
// then on onLoad
constructor() {
super();
this.nativeView = GMSMapView.mapWithFrameCamera(CGRectZero,this._createCameraPosition());
this._delegate = [
MapViewDelegateImpl.initWithOwner(new WeakRef(this)),MapVCDelegateImpl.initWithOwner(new WeakRef(this))
];
...
}
public onLoaded() {
super.onLoaded();
this.nativeView.delegate = this._delegate;
this.nativeView.indoordisplay.delegate = this._indoorDelegate;
this.notifyMapReady();
}
我也试图像这样在同一委托人上实现MapViewDelegateImpl
和MapVCDelegateImpl
,但是它不起作用
class MapViewDelegateImpl extends NSObject implements GMSMapViewDelegate,CLLocationManagerDelegate {
public static ObjCProtocols = [GMSMapViewDelegate,CLLocationManagerDelegate];
private _owner: WeakRef<MapView>;
public static initWithOwner(owner: WeakRef<MapView>): MapViewDelegateImpl {
let handler = <MapViewDelegateImpl>MapViewDelegateImpl.new();
handler._owner = owner;
return handler;
}
// here implements the methods of tow class...
}
如果在技术上可行的话,可以给我打电话吗?
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。