0

工作,我无法打通的问题是,UIActivityIndi​​catorView在我看来,不启动动画当我执行UIActivityIndi​​catorView startAnimating不,在searchBarSearchButtonClicked

[UIActivityIndicatorView startAnimating]; 

searchBarSearchButtonClicked 

这是我的代码:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
{ 
    [searchBar resignFirstResponder]; 

    NSString *causeStr = nil; 

    if ([CLLocationManager locationServicesEnabled] == NO) 
    { 
     causeStr = @"device"; 
    } 
    else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) 
    { 
     causeStr = @"app"; 
    } 
    else 
    { 
     [_activityIndicatorView startAnimating]; 

     _searchPlacesResults = [[NSMutableArray alloc] init]; 

     NSString * searchQuery = [searchBar text]; 

     FTGooglePlacesAPINearbySearchRequest *request = [[FTGooglePlacesAPINearbySearchRequest alloc] initWithLocationCoordinate:locationManager.location.coordinate]; 
     request.rankBy = FTGooglePlacesAPIRequestParamRankByDistance; 
     request.keyword = searchQuery; 
     request.radius = 500; 
     [self startSearchingPlaces:request]; 
    } 

    if (causeStr != nil) 
    { 
     NSString *alertMessage = [NSString stringWithFormat:@"You currently have location services disabled for this %@. Please refer to \"Settings\" app to turn on Location Services.", causeStr]; 

     [[[UIAlertView alloc] initWithTitle:@"Location Services Disabled" 
            message:alertMessage 
            delegate:nil 
          cancelButtonTitle:@"OK" 
          otherButtonTitles:nil] show]; 
    } 
} 

直到我清除搜索结果tableView使用其取消按钮连接到UISearchBar。

我曾尝试和验证其他方法调用时

[UIActivityIndicatorView startAnimating]; 

实际工作。

编辑: 我也已经验证了我的UIActivityIndi​​catorView不为空,其实这是我所得到的,当我的NSLog它:

<UIActivityIndicatorView: 0x16e91ed0; frame = (150 274; 20 20); hidden = YES; opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x16e91f90>> 
+0

你检查过else块包含的代码[UIActivityIndi​​catorView startAnimating]执行?你的NSLog显示UIActivityIndi​​catorView是隐藏的(hidden = YES);? – russell 2014-11-24 05:13:03

+0

是的,我刚刚检查过,其他块正在执行。 – rambodrahmani 2014-11-24 10:05:42

+0

由于_activityIndi​​catorView.hidesWhenStopped = YES,它显示HIDDEN; – rambodrahmani 2014-11-24 10:06:16

回答

1

您使用甘蔗SVProgresshood,著名的类活动的指标。 从here

复制SVProgressHUD文件夹下载到您的项目。

#import "SVProgressHUD.h" 

到你需要的ViewController。

你从哪里开始到动画活动指示灯写:

[SVProgressHUD showWithStatus:@"Loading.."]; 

以及在何处停止活动的指标,写:

[SVProgressHUD dismiss]; 

您可以设置的,而不是你自己的状态“中..”

希望它有效。

+0

如果我找不到其他解决方案,那么我会考虑按照您的建议使用第三方库。谢谢。 – rambodrahmani 2014-11-24 10:08:20

+0

这是使用最广泛的library.shortcut方法来处理活动indicator.best运气 – Logic 2014-11-24 10:18:37

0

您是否设置了断点来查看else语句是否被调用?如果是这样,请尝试以下操作:设置startAnimating主队列里面如下:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [_activityIndicatorView startAnimating]; 
}); 
+0

我设置断点,并调用else语句。我尝试了你的代码:我用'dispatch_async(dispatch_get_main_queue(),^ {_activityIndi​​catorView startAnimating]; })替换'[_activityIndi​​catorView startAnimating];'',但它不起作用... – rambodrahmani 2014-11-24 11:04:31

相关问题