gpt4 book ai didi

iphone - 如何将 uibutton 添加到自定义注释 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:18:08 26 4
gpt4 key购买 nike

我已经创建了一个自定义注释 View 。在 setSelected 方法中,我根据需要实现了一个 View ,现在我想向该 View 添加一个按钮。但是按钮没有检测到点击事件,它被 map View 吸收了。我应该怎么做才能添加像 rightcalloutaccessory 这样的按钮。提前致谢。

最佳答案

我通过将 UIButton 的控制事件更改为

解决了这个问题
[button addTarget:self action:@selector(clickEvent) forControlEvents:UIControlEventTouchDown]

下面是我创建自定义注释的代码部分。

    - (CustomAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[CustomAnnotation class]])
{
CustomAnnotationView *newAnnotationView = nil;
// determine the type of annotation, and produce the correct type of annotation view for it.

newAnnotationView = [[[CustomAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil delegate: targetController] autorelease];
[newAnnotationView setEnabled:YES];
[newAnnotationView setCanShowCallout:NO];
return newAnnotationView;
}
}





@interface CustomAnnotationView : MKAnnotationView
{
}
@end


@implementation CustomAnnotationView

- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier delegate:(id)targetController
{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
/* Set initial width as you want. ex: 50X50*/
self.frame = CGRectMake(0, 0, Initial_width, Initial_height);
self.backgroundColor = [UIColor redColor];
return self;
}

/* When you tap on an annotation this method is fired*/
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected){
/* When you select annotation, instead of showing default callout you can increase the width &height of annotation and add your custom view here*/
self.frame = CGRectMake(0, 0, max_width, max_height);
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(6, 0, max_width-10, max_height)];
view.backgroundColor = [UIColor blackColor];

UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *img = [UIImage imageNamed:@"image.png"];
but = CGRectMake(x , y, img.size.width + 20, img.size.height + 15);
[but setImage:img forState:UIControlStateNormal];
[but addTarget:targetController action:@selector(methodName) forControlEvents:UIControlEventTouchDown];
[view addSubview:but];

[self addSubview:view];
}
else {
/* When you tap outside of annotation, set the initial frame for the annotation. and remove the custom view from annotation*/
self.frame = CGRectMake(0, 0, Initial_width, Initial_height);
[view removeFromSuperview];

}
}

关于iphone - 如何将 uibutton 添加到自定义注释 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7877921/

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