9

以下のコードで、webview にリンクをロードしています。

- (void)viewDidLoad
{
    mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [self openWebPage:fileName];
    [self.view addSubview:myWebView];
    [self.view addSubview:mySpinner];
    mySpinner.center = CGPointMake(self.view.frame.size.width / 2.0, 100);
}

-(void)openWebPage:(NSString*)address {
    NSURL*url=[NSURL URLWithString:address];
    NSURLRequest*request=[NSURLRequest requestWithURL:url];
    myWebView.scalesPageToFit = NO;

    [myWebView loadRequest:request];
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error!!!" message:@"Please make sure you are connected to 3G or Wi-Fi." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil, nil];
    [errorView show];
    mySpinner.hidden = YES;
    [mySpinner stopAnimating];
}


-(void)webViewDidStartLoad:(UIWebView *)webView2 {
    NSLog(@"webViewDidStartLoad");
    mySpinner.hidden = NO;
    [mySpinner startAnimating];
    NSLog(@"step 1");
    NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 2 ];
    [NSThread sleepUntilDate:future];
    NSLog(@"step 2");
}

-(void)webViewDidFinishLoad:(UIWebView *)webView2 {
    NSLog(@"webViewDidFinishLoad");
    mySpinner.hidden = YES;
    [mySpinner stopAnimating];

}

私がやっているのは webViewDidStartLoad で、スピナーを表示し、 を使用してアニメーションを開始し [mySpinner startAnimating];ていますが、回転しませんでした。そのままです(回転しません)。

何がうまくいかないのですか?


編集 1

私はウェブビューデリゲートを持っています@interface WebDetailsViewController : UIViewController<UIWebViewDelegate>

[NSThread sleepUntilDate:future];また、アクティビティ インジケーター ビューがアニメーション化されているかどうかを確認するためだけに追加しました。

以下は私がNSLogから持っているものです

2013-06-23 16:29:28.843 GulfLab[2048:907] webViewDidStartLoad
2013-06-23 16:29:28.845 GulfLab[2048:907] step 1
2013-06-23 16:29:30.847 GulfLab[2048:907] step 2
2013-06-23 16:29:31.836 GulfLab[2048:907] webViewDidFinishLoad

編集 2

さて、問題は以下の行にあります...

[UIView  beginAnimations: @"Showinfo"context: nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController: secondView animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];

以下は私が持っているものです...

最初のView Controllerの1つにボタンがあり、それらのボタンをクリックすると2番目のView Controllerが表示され、押されたボタンに基づいてWebファイルが表示されます。

私のクライアントは、2番目のビューに来るときに何らかの効果を望んでいました。そのために、上記のコードを追加しました。しかし、そのせいで、私は活動の問題に直面しています。

どのような変更を行う必要があるか考えていますか?


さらに調査したところ、問題はこの行にあることがわかりました...

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];

しかし、そうでなければアニメーションが発生しないため、この行が必要です...

また、今日、webviewに触れるとアニメーションが始まることに気付きました

うーん...誰か助けて

4

6 に答える 6

20

インジケーターが回転しないという同様の問題に誰かが遭遇した場合:

Animatingプロパティがストーリーボードに設定されていることを確認してください。

アクティビティ インジケーターのアニメーション

于 2015-12-11T15:39:40.840 に答える
5

メインの UI スレッドにいないため、アニメーション化されていない可能性があります。メイン ループのディスパッチ キューに追加して、メイン ループに強制的に追加すると、アニメーションが表示されます。

dispatch_async(dispatch_get_main_queue(), ^{
    [mySpinner startAnimating];
}];
于 2013-06-23T13:38:15.570 に答える