2017-02-01 3 views
5

私はビューにUIActionSheetを提示しており、アクションシートのボタンの1つが別のアクションシートを示しています。 iPadで2番目のアクションシートを提示すると、ログに次の警告メッセージが表示されます。UIPopoverBackgroundVisualEffectViewの警告を取得する

UIPopoverBackgroundVisualEffectViewは不透明度をアニメーション化するよう求められています。不透明度がに戻るまでこれが壊れて表示されるように効果が発生します。1.

これが私のコードです:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Option"] delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Sort", nil]; 
actionSheet.tag = 1; 
[actionSheet showInView:self.view]; 

とデリゲートに:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    [self showSortAction]; 
} 

-(void)showSortAction {  
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Sort By" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"A-Z", @"Z-A", @"Newer to older", @"Older to newer", nil];   
    actionSheet.tag = 2; 
    [actionSheet showInView:self.view]; 
} 
+0

あなたが何を求めているかは非常に不明です。あなたの質問を編集してください。 –

+0

警告メッセージとは何ですか?あなたのUIイメージとコードを追加してください。 –

+0

デモを共有しますか?あなたが気にしないなら、私はそれをチェックし、解決策であなたに戻ってきます –

答えて

4

私の推測では、プレゼンテーションということです第2のアクションシートの第1のアクションシートの不透明度が変化し、あなたが見ている警告がトリガされる。 を-actionSheet:clickedButtonAtIndex:から呼び出す代わりに、-actionSheet:didDismissWithButtonIndex:から呼び出してください。これにより、最初のアクションシートには、2番目のアニメーションがアニメーション化される前に画面から消えていくのに十分な時間が与えられます(UIActionSheetDelegate documentation - 詳細はclickedとdid-dismissメソッドの詳細テキストを参照)。

しかし、被験者は、UIActionSheet documentationには、iOS 8以降では非推奨となっていることに注意してください。あなたがiOS 7以上でプログラミングしている場合を除き、できるだけ早くUIAlertControllerに移行することを検討してください。

2

@Timは上記のとおりです。

廃止予定のUIActionSheetを使用しないでください。 actionSheet:didDismissWithButtonIndex:の使用についての彼の解決策は、以前はうまくいっていたかもしれませんが、https://stackoverflow.com/a/25044710/1634905によると、AppleがUIAlertControllerに移ったときにはもう動作しません。

問題を解決するための古い方法ではなく、コードをUIAlertControllerに変更する必要があります。

関連する問題