按照高德官方的思路集成之后,會(huì)發(fā)現(xiàn)氣泡點(diǎn)擊事件觸發(fā)不了腮敌,很頭疼阱当,到網(wǎng)上找了很多解決方法俏扩,都是千篇一律,也解決不了問題弊添,實(shí)在很氣憤录淡。寫出自己拙劣的辦法暫時(shí)解決這一問題,望大家再碰到這件事的時(shí)候能看到我的思路幫助大家解決問題油坝,同時(shí)也想向大家請(qǐng)教更好的方法嫉戚!
按照大家在高德官方Api提示集成的思路就不多說了,大家都是大神免钻,不解釋彼水!然最后運(yùn)行起來發(fā)現(xiàn)氣泡點(diǎn)擊不了,官方的解釋如下:
自定義annotationView的彈出框. 注意:不會(huì)觸發(fā)-(void)mapView: didAnnotationViewCalloutTapped: since 5.0.0
?重點(diǎn)來了,網(wǎng)上一系列的解決方法是
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *view = [super hitTest:point withEvent:event];
if (view == nil) {
CGPoint tempoint = [self.calloutView.navBtn convertPoint:point fromView:self];
if (CGRectContainsPoint(self.calloutView.navBtn.bounds, tempoint))
{view = self.calloutView.navBtn;}}
return view;}
官方?jīng)]有加buuton,我對(duì)這段代碼進(jìn)行了修改如下:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *view = [super hitTest:point withEvent:event];
if (view == nil) {
CGPoint tempoint = [self.calloutView convertPoint:point fromView:self];
if (CGRectContainsPoint(self.calloutViewbounds, tempoint))
{
view = self.calloutView;
[[NSNotificationCenter defaultCenter] postNotificationName:@"remove" object:self.annotation.title];
[view removeFromSuperview];
}
return view;
在這一塊post 出去一個(gè)通知极舔,在調(diào)用Map地圖的Controller里監(jiān)聽post 的通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(click:) name:@"remove" object:nil];?
selector方法
-(void)click:(NSNotification *)info;
接受object里面的內(nèi)容就可以了,post 出的object 可以是你定義的任何形式链瓦,模型字典亦可拆魏,我這邊只是做簡單的數(shù)據(jù)輸出,至此就完成了數(shù)據(jù)的交互和UI交互慈俯。
結(jié)尾語:
第一次寫文章渤刃,也許在別人看來這篇文章毫無價(jià)值,但還是愿意將自己的一點(diǎn)點(diǎn)心得分享出去 贴膘,也許不是最好的卖子,但也是萬千方法的千萬分之一,接下來的日子會(huì)繼續(xù)更新好玩的刑峡,以便給大家?guī)矸奖恪?/p>