将UIButton和其他UIControl对象放在MKAnnotationView中并允许用户交互

jha*_*ott 7 iphone mapkit mkannotation ipad mkannotationview

我在地图上有一个自定义注释视图,其中有一个UIButton,但UIButton按下后没有响应.我在注释视图上有两个主要的用户交互问题:

  1. 按钮和其他控件没有响应.
  2. 我希望注释根据我的实现来阻止触摸- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event- 也就是说,如果我返回YES,那么我不希望触摸被发送到MKMapView(可能选择其他注释,这是注释我的注释视图),我想处理在这种情况下触摸自己.

我确定userInteractionEnabled已设置为YES并且我已经调查了如何MKAnnotationView通过覆盖touchesBegan等将触摸发送到自定义注释视图(我的子类)- 但似乎触摸通常被取消(我以为我设法得到touchesEnded了几次) - 所以看起来甚至很难手动实现与自定义注释视图的任何用户交互.

有没有人有任何关于允许更多用户与MKAnnotationView对象交互的见解?

jha*_*ott 5

我设法在一位同事的帮助下解决了这个问题.解决方案是覆盖- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event.我们的假设是MKAnnotationView(你的注释视图必须继承)覆盖它来做'错误'的事情(可能是因为注释选择不会在重叠注释之间​​被阻止).所以你必须重新覆盖它以做正确的事情并返回适当的东西UIView,系统然后将事件发送给它,用户将能够与它进行交互:).这具有有益的(在这种情况下)副作用,即交互式注释阻止选择其后面的注释.