使用UIButton作为子视图的MKannotationView,按钮不响应

时间:2012-01-30 13:07:28

标签: objective-c ios mapkit

我添加了一个带按钮的视图作为MKAnnotationView的子视图

 CCBigBubleViewController* buble = [[CCBigBubleViewController alloc] init];
 [annotationView addSubView:buble.view];

它显示完美,但按钮不响应敲击。

3 个答案:

答案 0 :(得分:4)

在MKAnnotationView的实现中,覆盖hitTest方法:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    if (CGRectContainsPoint(_button.frame, point)) {
        return _button;
    }
    return [super hitTest:point withEvent:event];
}

然后,您的按钮将接收触摸事件。

答案 1 :(得分:3)

您的annotationView的大小可能不正确。其中的框架子视图不响应触摸。为了测试它,你可以剪辑到界限。

因此,请确保您的按钮位于AnnotationView的框架内,也许sizeToFit会在这里提供帮助。

答案 2 :(得分:0)

你必须在这样的编码中创建按钮动作

 [buttonInstance addTarget:self action:@selector(youraction:) forControlEvents:UIControlEventTouchUpInside];