gpt4 book ai didi

ios - MKAnnotationView 的 subview 上的 UITapGestureRecognizer 不起作用

转载 作者:行者123 更新时间:2023-11-29 02:51:37 25 4
gpt4 key购买 nike

我正在尝试添加点击识别器以显示附加信息标注。我尝试直接调用选择器“showPersonInfo”并且它正在工作。但是,当我尝试将它添加到我正在处理的 MKAnnotationView 的 subview 上的 UITapGestureRecognizer 中时。当我点击时,选择器没有触发。

此代码在 MKAnnotationView 的子类的 .m 中

- (void)layoutSubviews {

[self addSubView:self.imageContainerView];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showPersonInfo:)];
[self.imageContainerView addGestureRecognizer:tap];

}

- (void)showPersonInfo:(UITapGestureRecognizer *)tap {

NSLog(@"annotation imageView touched");
[self addSubview:self.personInfoView];

}

最佳答案

您可以使用 mapView Delegate 方法向注释 View 添加操作

 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if (annotation == mapView.userLocation)
return nil;

static NSString *s = @"identifier";
MKAnnotationView *pin = [mapView dequeueReusableAnnotationViewWithIdentifier:s];
if (!pin) {
pin = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:s];
pin.canShowCallout = YES;
pin.image = [UIImage imageNamed:@"pin.png"];
pin.calloutOffset = CGPointMake(0, 0);
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[button addTarget:self
action:@selector(showPersonInfo:) forControlEvents:UIControlEventTouchUpInside];
pin.rightCalloutAccessoryView = button;
}
return pin;
}

关于ios - MKAnnotationView 的 subview 上的 UITapGestureRecognizer 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24426294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com