2010-12-16 6 views
36

Wenn ich meine app laufen und ich klicken für actionsheet erscheint dieses:Ausgabe mit UIActionSheet

Presenting Aktion Blatt durch seine Superview abgeschnitten. Einige Steuerelemente reagieren möglicherweise nicht auf Berührungen. Auf dem iPhone versuchen Sie - [UIActionSheet showFromTabBar:] oder - [UIActionSheet showFromToolbar:] anstelle von - [UIActionSheet showInView:].

Wie kann ich beheben?

Antwort

28

Sie könnten [MyActionSheet showInView:super.view]; versuchen oder wenn Sie ein UITabBar oder UIToolbar haben dann, wie es schon sagt, können Sie [MyActionSheet showFromTabBar:self.tabBarController.tabBar]; oder [MyActionSheet showFromToolBar:self.toolbar];

12

Es aufgelöst werden sollte [actionSheet showInView:self.parentViewController.view]; statt self.view zu verwenden, wenn Sie UINavigationViewController weil diese Steuerung verwenden hat die obere Navigationsleiste als Standard.

+0

oder self.navigationController.view Dank – LolaRun

1

beschloß ich meinen fast um die gleichen Fall von:

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

annehmen, dass Sie TabBarController xCode Vorlage als Start verwenden.

61

Versuchen Sie diese, es funktioniert für mich perfekt:

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

Danke, gelöst diese Technik mein Problem. –

+0

Am meisten Willkommen Sehr geehrte !!! – VSN

+0

perfekt :)) genau das, was ich gesucht habe !! – filou

0

Denken Sie daran, dass Ihr Symbolleiste Teil Ihrer Navigationssteuerung sein kann. Sie können darauf zugreifen mit 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); 

Dies sollte das Problem lösen.

+0

Danke, dieser war der einzige, der es für mich ausarbeitete (mit leichten Ergänzungen sowohl mit als auch ohne Navigationscontroller). A hatte ein ähnliches Problem mit einer benutzerdefinierten iOS6 + iOS7-Fensterkonfiguration, wenn Sie für iOS7 Ihr Fenster um 20 Punkte nach unten verschieben und alles so lassen, wie es ist. –

0

Eine weitere ähnliche Lösung, die für mich mit einem UIPageViewController gearbeitet -> UINavigationViewController -> Tableviewcontroller Struktur ist:

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

verwenden:

[actionSheet showInView:self.view.window]; 

Dies wird die Aktion Blatt zwingen zu sein über den Navigationsleisten angezeigt und reagieren auf alle Taps. Beachten Sie jedoch, dass bei Verwendung einiger linker/rechter gleitender Menübibliotheken das actionSheet möglicherweise außerhalb des Bildschirms angezeigt wird. Einfach testen ...

0

Ich habe alle obigen Antworten vergeblich versucht. Letztlich stellte ich fest, dass die einzige Lösung darin bestand, die Anzahl der Elemente auf dem Aktionsblatt zu reduzieren, die übergelaufen waren.

0

Heres die Swift-Version:

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