微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用打字稿

如何解决如何使用打字稿

我尝试在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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?