Mam UIBarButtonItem otwierający arkusz akcji, aby zaoferować użytkownikom wybór tego, co mają zrobić. Wszystko działa zgodnie z oczekiwaniami, chyba że spróbuję kliknąć przycisk „Anuluj”. Wydaje się, że cel przycisku przesunął się w górę z miejsca, w którym powinien. Mogę go aktywować tylko poprzez kliknięcie gdzieś pośrodku przycisków „Anuluj” i „OK”.
Wypróbowałem arkusze akcji w innych aplikacjach i działają dobrze, więc to nie tylko mój wielki kciuk. Arkusz akcji otwiera się w UIViewController
- (void)showOpenOptions
{
UIActionSheet *sheet = [[UIActionSheet alloc]
initWithTitle:NSLocalizedString(@"Open link in external application?", @"Open in external application")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel")
destructiveButtonTitle:NSLocalizedString(@"Open Link", @"Open Link")
otherButtonTitles:nil];
[sheet showInView:self.view];
[sheet release];
}
ios
objective-c
iphone
cocoa-touch
uiactionsheet
Nevan King
źródło
źródło
Odpowiedzi:
Zamiast przekazywać widok bieżącego kontrolera widoku do arkusza akcji, użyj
showFromTabBar:
metodyUIActionSheet
.Właściwy sposób
Zapewni to właściwy obszar do dotknięcia:
Niewłaściwy sposób
Spowoduje to umieszczenie obszaru do kliknięcia w niewłaściwym miejscu (jeśli używasz paska kart lub paska narzędzi):
Jeśli używasz paska narzędzi , użyj
showFromToolbar:
zamiast tego metody. Będziesz potrzebować odniesienia do paska narzędzi, najprawdopodobniej ivarMoja stara odpowiedź też działa, ale jest zepsuta:
Właśnie znalazłem możliwą odpowiedź:
http://openradar.appspot.com/6410780
Edycja: Działa poprawnie, gdy zmienię widok na widok paska kart
źródło
Znalazłem tutaj odpowiedź , która działa.
przy użyciu
[filterActionSheet showInView:[self.view window]]
:;Wypróbowałem kilka sposobów, aby dostać się do mojego paska kart i sposób, w jaki ta aplikacja jest skonfigurowana, wydaje się skomplikowana ...
źródło
Zamiast tego użyj:
źródło
showInTabBar:
doshowFromTabBar:
. Zauważ również, że istnieje metoda 'showFromToolbar:', w zależności od tego, jakie meble ekranowe masz na dole ekranu. Myślę, że jest to lepsza odpowiedź niż zaakceptowana odpowiedź.Oto poprawka, spróbuj tego:
źródło
Myślę, że połączenie trzech odpowiedzi jest właściwym sposobem rozwiązania tego problemu:
tj. użyj showFromTabBar (dlatego istnieje) i nie potrzebujesz parentViewController, jak zauważył Nathan (w rzeczywistości self.parentViewController.tabBarController.tabBar zwraca dla mnie nil.
źródło
FYI - miał ten sam problem z arkuszem akcji UIDocumentInteractionController przechodzącym na pasek zakładek. Wykorzystano następujące elementy, aby naprawić.
źródło
pisać uproszczony kod
to działa dobrze
źródło