繁体   English   中英

MapKit:未调用 setSelected(_:animated:)

[英]MapKit : the setSelected(_:animated:) not called

在显示 map 页面中, annotationview视图是自定义的,我在实现中覆盖了setSelected(:)方法。 但是,当我单击annotationView时,不会调用该方法。

- (void)setSelected:(BOOL)select {
    [super setSelected:select];  
  
    NSLog(@"select:+++++ %d", select);
}

NSLog不打印,为什么?

直接解决方案

如果您只想要一个直接的解决方案,这可能会有所帮助。

- (void)setSelected:(BOOL)select { 
    [super setSelected:select animated:YES]
  
    NSLog(@"select:+++++ %d", select);
}

执行

我在实现中覆盖了setSelected(_:animated:)方法

如果是这样,我认为您应该覆盖以下方法而不是- (void)setSelected:(BOOL)select ,这是属性selectedSetter方法。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    .... // do your custom work
}

为什么以及如何

经过大量测试,我发现Super Class必须实现这个

- (void)setSelected:(BOOL)selected {
    
}

所以调用[super setSelected:select]时你什么也得不到

这很奇怪,但可能是合理的如果 Apple 不建议我们将selectedSetter方法覆盖为- (void)setSelected:(BOOL)select已经完成了这项工作。

如您所见,这种方法存在于大部分 System Class 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM