2017-02-01 43 views
5

Przedstawiam w moim widoku UIActionSheet, a jeden z przycisków arkusza czynności przedstawia kolejny arkusz czynności. Kiedy przedstawiam drugi arkusz akcji na iPadzie, otrzymuję komunikat ostrzegawczy w dziennikach:Otrzymywanie ostrzeżenia dla UIPopoverBackgroundVisualEffectView

UIPopoverBackgroundVisualEffectView jest proszony o animację jego krycia. Spowoduje to efekt pojawiać łamane aż zmętnienie wraca do 1.

To jest mój kod:

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

I delegata:

-(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

Nie jest jasne, o co pytasz. Edytuj swoje pytanie. –

+0

Co to jest komunikat ostrzegawczy. Dodaj swoje obrazy interfejsu użytkownika i kod, wykonuj to, co zrobiłeś. –

+0

Czy udostępnisz wersję demo? Jeśli nie masz nic przeciwko, sprawdzę to i wrócę do Ciebie z rozwiązaniem –

Odpowiedz

4

Domyślam się, że prezentacja drugiego arkusza akcji powoduje zmianę nieprzezroczystości pierwszego arkusza działania, powodując wyświetlenie ostrzeżenia. Zamiast wywoływać numer -showSortAction z poziomu -actionSheet:clickedButtonAtIndex:, wywołaj go z poziomu -actionSheet:didDismissWithButtonIndex:. Dzięki temu pierwszy arkusz czynnościowy wystarczy, aby zniknął z ekranu, zanim drugi zacznie się animować. (Zobacz: UIActionSheetDelegate documentation - w szczególności tekst szczegółowy dla metod kliknięcia i odrzucenia).

Podczas gdy jesteśmy na jednak należy pamiętać, że UIActionSheet documentation twierdzi, że jest przestarzałe od wersji iOS 8. Jeśli nie programujesz z iOS 7 lub starszym, rozważ przejście do UIAlertController tak szybko, jak to możliwe.

2

@Tim jest poprawny powyżej.

Już nie powinieneś używać przestarzałego UIActionSheet. Jego rozwiązanie dotyczące korzystania z actionSheet:didDismissWithButtonIndex: mogło działać wcześniej, ale zgodnie z informacjami podanymi na https://stackoverflow.com/a/25044710/1634905 nie będzie już działać, ponieważ Apple przeniosło się na UIAlertController.

Naprawdę należy przełączyć kod na UIAlertController zamiast starej metody rozwiązania problemu.