gpt4 book ai didi

ios - 隐藏的事件指示器无效

转载 作者:行者123 更新时间:2023-11-28 20:12:41 31 4
gpt4 key购买 nike

我想在每次用户点击 mkannotationPinView 顶部时隐藏并启动事件指示器。

这是我的代码:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
if (!self.activityIndicator) {
NSLog(@"error");
}
self.activityIndicator.hidden = NO;
[self.mapView addSubview:self.activityIndicator];
[self.activityIndicator startAnimating];
if ([view.leftCalloutAccessoryView isKindOfClass:[UIImageView class]]) {
UIImageView *imageView = (UIImageView *)(view.leftCalloutAccessoryView);
if ([view.annotation respondsToSelector:@selector(thumbnail)]) {
imageView.image = [view.annotation performSelector:@selector(thumbnail)];
}
}
[self.activityIndicator stopAnimating];
}

我也尝试切换 [self.mapView addSubview:self.activityIndicator];[self.view addSubview:self.activityIndicator];但效果是一样的,没有出现在 View 上。有什么问题???谢谢

最佳答案

再次在主线程上启动动画后将代码排队。你可以使用

  • dispath_asyn
  • PerformSelectorOnMainThread
  • PerformSelectorInBackground

这三个都应该工作得很好。

    -(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
if (!self.activityIndicator) {
NSLog(@"error");
}
self.activityIndicator.hidden = NO;
[self.mapView addSubview:self.activityIndicator];
[self.activityIndicator startAnimating];

dispatch_async(dispatch_get_main_queue(), ^(void) {
if ([view.leftCalloutAccessoryView isKindOfClass:[UIImageView class]]) {
UIImageView *imageView = (UIImageView *)(view.leftCalloutAccessoryView);
if ([view.annotation respondsToSelector:@selector(thumbnail)]) {
imageView.image = [view.annotation performSelector:@selector(thumbnail)];
}
[self.activityIndicator stopAnimating];
}
});
}

说明:如果您在不排队的情况下执行 UI 操作,则主线程中的操作效果将不可见,因为 UI 不会显示任何事件,除非您完成线程运行并移至主线程中的下一个操作。同样适用于 addSubview removeSubview。

关于ios - 隐藏的事件指示器无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19549856/

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