跳过选择,直接在MapKit Marker中拖动

时间:2017-02-21 16:19:17

标签: swift mkmapview mapkit

更新: 我真的在问错误的问题。 第一次点击选择标记。我想要做的是跳过选择阶段,并立即开始拖动。选择中断了长按事件,我只想让长按事件开始选择。 我尝试用" start"来调用setDragState。作为国家,但这不起作用。该对象会忘记它处于拖动状态,您仍然需要第二次点击。

ORIGINAL:

这是我有一段时间以来遇到的问题。我在MKMapView对象中有一个可拖动的标记。

然而,在我拖动它之前,它总是首次触摸标记上的两(2)次触摸。一旦完成此操作,在随后的拖动中,第一次触摸立即启动拖动。它只是需要第二次触摸的第一个拖动。

这不是世界末日,但有点烦人。

关于如何制作它以使第一次触摸也成为拖动触摸的任何想法?

1 个答案:

答案 0 :(得分:0)

行。我想出了如何做到这一点。

我"预先选择"标记。这意味着我不能为它做一个简单的标注,在我的情况下这没什么大不了的,但它给了我想要的东西。

更新:代码或它没有发生。

我添加了几个MKMapViewDelegate函数:

ApiImpl = (function () {
                function ApiImpl() { }
                
                ApiImpl.prototype.invoke = function (callerObj, callback, action) {
                    var params = [];
                    for (var _i = 3; _i < arguments.length; _i++) {
                        params[_i - 3] = arguments[_i];
                    }

                    params.push(callback); //push callback function into params, so object of QWebChannel can callback the function after execute the 'action'
                    
                    if (typeof window['api'] === 'undefined') {
                        new QWebChannel(qt.webChannelTransport, function (channel) {
                            window['api'] = channel.objects.api;
                           
                            var func = window['api'][action].bind(callerObj); 
                            return func.apply(callerObj, params); //here goes error
                        });
                    }
                    
                    var func = window['api'][action].bind(callerObj);
                    return func.apply(callerObj, params); //here goes error
                };
                return ApiImpl;
            }());
            Api = (function () {
                function Api() {
                }
                Api.daysOfMonth = function (callerObj, month, year, callback) {
                    this.impl.invoke(callerObj, callback, 'daysOfMonth', month, year);
                };
                return Api;
            }());
            Api.impl = new ApiImpl();
            exports_1("Api", Api);

第一个是在我设置地图时调用的,第二个是在有东西试图关闭选择时调用的。

注意:这仅适用于带有单个标记的地图。