我正在研究 Google 地图 api。目前,当我们尝试拖动标记时,我们必须按住几秒钟,然后 mapView 上升几个点,然后我们才能拖动标记。我想改变这种行为。
我可以覆盖minimumPressDuration
of UILongPressGestureRecognizer
在地图视图中?以某种方式像这样:
for (id gestureRecognizer in mapView.gestureRecognizers)
{
if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
gestureRecognizer.minimumPressDuration = 0.0f;
}
}
基本上我不想按住标记几秒钟,然后开始拖动它,它应该是可瞬时拖动的,并且地图在拖动过程中不应移动。我该如何实现这一目标?
试穿一下尺寸
func recursivlyPrint(subviews: [UIView]){
for subview in subviews{
if subview.gestureRecognizers != nil{
for gesture in subview.gestureRecognizers!{
print(gesture)
if gesture is UILongPressGestureRecognizer{
(gesture as! UILongPressGestureRecognizer).minimumPressDuration = 0.0
}
}
}
if subview.subviews.count>0{
recursivlyPrint(subviews: subview.subviews)
}
}
}
添加标记后,在 mapView 的子视图上运行它。这不是最好的方法。更好的方法是访问手势操作的选择器名称并按该名称进行过滤(也许还有其他长按手势与可能与整个 mapView 发生冲突的标记无关)。获取iOS中UIGestureRecognizer的Action https://stackoverflow.com/questions/20240634/getting-the-action-of-uigesturerecognizer-in-ios此方法使用手势识别器类中的私有属性,这可能会被阻止(也许?)
编辑:您可能还想按子视图的类型进行过滤
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)