我在 map 上有一个自定义注释 View ,其中有 UIButton
在其中,但是UIButton
按下时没有反应。我在注释 View 上的用户交互方面遇到两个主要问题:
- 按钮和其他控件没有响应。
- 我希望注释根据我的
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event
的实现来阻止触摸- 也就是说,如果我返回 YES,那么我不希望触摸被发送到MKMapView
(可能会选择注释 View 后面的其他注释),在这种情况下我想自己处理触摸。
我已经确定userInteractionEnabled
设置为YES
我研究了如何通过覆盖 MKAnnotationView
将触摸发送到自定义注释 View (我的 touchesBegan
的子类)等等 - 但似乎触摸通常会被取消(我想我已经设法获得 touchesEnded
几次) - 所以看起来甚至很难手动实现与自定义注释 View 的任何用户交互。
有谁对允许更多用户与 MKAnnotationView
进行交互有任何见解吗?对象?
最佳答案
我在同事的帮助下成功解决了这个问题。解决方案是重写 - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event
。我们的假设是 MKAnnotationView
(您的注释 View 必须继承它)会覆盖它以执行“错误”的操作(大概是这样注释选择不会在重叠注释之间被阻止)。因此,您必须重新重写它才能做正确的事情并返回适当的 UIView,然后系统将向其发送事件,用户将能够与其交互:)。这具有有益的(在本例中)副作用,即交互式注释会阻止对其后面的注释的选择。
关于iphone - 将 UIButton 和其他 UIControl 对象放入 MKAnnotationView 中并允许用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862901/