2010-12-16 17 views
36

gdy uruchamiam moją aplikację i przycisk do actionsheet klikam pojawia to:Problem z UIActionSheet

Przedstawiając arkusz działania przycięte przez jej SuperView. Niektóre elementy sterujące mogą nie reagować na dotknięcia. Na telefonie iPhone spróbuj - [UIActionSheet showFromTabBar:] lub - [UIActionSheet showFromToolbar:] zamiast - [UIActionSheet showInView:].

Jak mogę to naprawić?

Odpowiedz

28

Można spróbować [MyActionSheet showInView:super.view]; lub jeśli masz UITabBar lub UIToolbar następnie, jak to sugeruje, można użyć [MyActionSheet showFromTabBar:self.tabBarController.tabBar]; lub [MyActionSheet showFromToolBar:self.toolbar];

12

To powinien być rozwiązany w użyciu [actionSheet showInView:self.parentViewController.view]; zamiast self.view jeśli używasz UINavigationViewController ponieważ ten kontroler ma domyślny górny pasek nawigacyjny.

+0

lub self.navigationController.view Dzięki – LolaRun

1

postanowiłem mój prawie-the-samą sprawę przez:

YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
[actionSheet showFromTabBar:delegate.tabBarController.tabBar]; 

Zakładamy użyć TabBarController Xcode szablon jako początek.

61

Spróbuj tego, że pracował dla mnie idealnie:

[actionSheet showInView:[UIApplication sharedApplication].keyWindow]; 
+0

Dziękuję, technika ta rozwiązać mój problem. –

+0

Najbardziej Witamy Drogi !!! – VSN

+0

idealnie :)) właśnie tego szukałem !! – filou

0

Pamiętaj, że pasek narzędzi może być częścią kontrolera nawigacyjnego. Można uzyskać do niego dostęp pod numerem self.navigationController.toolbar

5
[sheet showInView:[UIApplication sharedApplication].keyWindow]; 
    sheet.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height-sheet.frame.size.height, [UIScreen mainScreen].bounds.size.width, sheet.frame.size.height); 

To powinno rozwiązać problem.

+0

Dzięki, ten był dla mnie jedynym rozwiązaniem (z niewielkimi dodatkami do pracy zarówno z kontrolerem nawigacyjnym, jak i bez niego). Miał podobny problem z niestandardową konfiguracją okna iOS6 + iOS7, gdy w systemie iOS7 przesuwa się o 20 punktów i pozostawia wszystko w niezmienionym stanie. –

0

Inne podobne rozwiązanie, który pracował dla mnie z UIPageViewController -> UINavigationViewController -> Siatka TableViewController jest:

[actionSheet showInView:self.view.superview]; 
0

Użyj tego:

[actionSheet showInView:self.view.window]; 

To zmusi arkusz działań, jakie należy wyświetlane powyżej pasków nawigacyjnych i reagować na wszystkie stuknięcia. Zauważ jednak, że jeśli użyjesz lewych/prawych przesuwnych bibliotek menu, może to spowodować, że arkusz akcji będzie prezentowany poza ekranem. Po prostu przetestuj ...

0

Wypróbowałem wszystkie powyższe odpowiedzi bezskutecznie. Ostatecznie okazało się, że jedynym rozwiązaniem było zmniejszenie liczby elementów w arkuszu czynności, który był przepełniony.

0

Herezje Swift wersja:

actionSheet.showInView(UIApplication.sharedApplication().keyWindow)