【问题标题】:MkMapView setRegion animation prevents touch events on Annotation ViewsMkMapView setRegion 动画防止 Annotation Views 上的触摸事件
【发布时间】:2011-02-03 15:01:05
【问题描述】:

我们有一个带有一堆 Image Annotation 的 MKmapView,其中每个 Image Annotation 都会响应触摸 通过覆盖 AnnotationView 子类的这些方法:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

我们的地图区域使用

更新
[MkMapView setRegion:animated:]

每当收到新位置并且距离旧位置足够远以产生影响时。

我注意到,如果我们将 animated 标志设置为 YES,则很少会检测到对注释的触摸(可能是由于主线程忙于在两个地图区域。 当我们将 animated 标志设置为 NO 时,一切都很好,但地图转换可能(或可能不会)变得生涩。

我的问题是,这是否是 [MkMapView setRegion:animated] 函数的 animated 标志的预期行为,或者是否有解决此问题的方法。

提前致谢

【问题讨论】:

    标签: iphone cocoa-touch iphone-sdk-3.0 mkmapview


    【解决方案1】:

    通常,正在动画的地图视图在动画期间将其 userInteractionEnabled 属性设置为 no。如果您需要更改此行为,您应该子类化视图并覆​​盖适当的方法。

    或者,您可以在动画期间在地图视图上放置一个透明视图,以捕捉特定类型的动作,例如响应双击以停止区域变化。

    【讨论】:

    • 感谢有关 userInteractionEnabled 属性更改的指针,但我无法找到有关系统可能决定更改此属性的原因和时间的任何信息。但是,我可能会通过 KVO 监听它的变化,并在必要时将其切换回来。
    • 然而,我们的应用有一个导航工具栏,上面有 mkMapView 的按钮。问题是,在 setRegion 动画期间,不仅注释视图对触摸没有响应,而且工具栏上的按钮也是如此。如果 [MkMapView setRegion:region animated:YES] 阻塞了主线程,那么只有按钮无响应才有意义。
    • @VladimirGurovich 这个答案如何解决您的问题?我观察了 userInteractionEnabled 属性,那里没有变化。
    • @vrwim 因为我的评论现在已经 7 年了,并且指的是几个主要版本落后的版本 IOS SDK,我不知道这个答案是否相关,但老实说我不记得了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多