菜鸟教程小白 发表于 2022-12-13 09:29:57

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


                                            <p><p>我创建了一个自定义注释 View 。在 setSelected 方法中,我根据需要实现了一个 View ,现在我想向该 View 添加一个按钮。但是按钮没有检测到点击事件,
它被 mapView 吸收。我应该怎么做才能添加像 rightcalloutaccessory 这样的按钮。
提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我通过将 <code>UIButton</code> 的控制事件更改为 </p> 解决了这个问题

<pre><code>
</code></pre>

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

<pre><code>    - (CustomAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id &lt;MKAnnotation&gt;)annotation
    {
      if (])
      {
             CustomAnnotationView *newAnnotationView = nil;
    // determine the type of annotation, and produce the correct type of annotation view for it.

             newAnnotationView = [[ initWithAnnotation:annotation reuseIdentifier:nil delegate: targetController] autorelease];
             ;
             ;
             return newAnnotationView;
       }
    }





    @interface CustomAnnotationView : MKAnnotationView
    {
    }
    @end


    @implementation CustomAnnotationView

    - (id)initWithAnnotation:(id &lt;MKAnnotation&gt;)annotation reuseIdentifier:(NSString *)reuseIdentifier delegate:(id)targetController
    {
            self = ;
            /* Set initial width as you want. ex: 50X50*/
            self.frame = CGRectMake(0, 0, Initial_width, Initial_height);
             self.backgroundColor = ;
             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 &amp;height of annotation and add your custom view here*/
                self.frame = CGRectMake(0, 0, max_width, max_height);
                UIView *view = [initWithFrame:CGRectMake(6, 0, max_width-10, max_height)];
                view.backgroundColor = ;

                UIButton *but = ;      
                  UIImage *img = ;
                but = CGRectMake(x , y, img.size.width + 20,img.size.height + 15);
                ;
                ;
                ;

                ;
      }
      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);
                ;

            }
    }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 如何将 uibutton 添加到自定义注释 View ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/7877921/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/7877921/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 如何将 uibutton 添加到自定义注释 View