如何使用打字稿

问题描述

我尝试在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();
    }

我也试图像这样在同一委托人上实现MapViewDelegateImplMapVCDelegateImpl,但是它不起作用

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...