更新: 我真的在问错误的问题。 第一次点击选择标记。我想要做的是跳过选择阶段,并立即开始拖动。选择中断了长按事件,我只想让长按事件开始选择。 我尝试用" start"来调用setDragState。作为国家,但这不起作用。该对象会忘记它处于拖动状态,您仍然需要第二次点击。
ORIGINAL:
这是我有一段时间以来遇到的问题。我在MKMapView对象中有一个可拖动的标记。
然而,在我拖动它之前,它总是首次触摸标记上的两(2)次触摸。一旦完成此操作,在随后的拖动中,第一次触摸立即启动拖动。它只是需要第二次触摸的第一个拖动。
这不是世界末日,但有点烦人。
关于如何制作它以使第一次触摸也成为拖动触摸的任何想法?
答案 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);
第一个是在我设置地图时调用的,第二个是在有东西试图关闭选择时调用的。
注意:这仅适用于带有单个标记的地图。