2011-07-12 13 views
6

Wyświetlam popover z kontrolerem widoku zawierającym zestaw właściwości modalInView. Potrzebuję użytkownika, aby wprowadzić odpowiedź tutaj przed kontynuowaniem.Jak mogę wyłączyć główny pasek narzędzi podczas wyświetlania popover za pomocą modalInPopover?

Chociaż wyłącza to większość elementów sterujących interfejsu użytkownika, powoduje to wyłączenie przycisków paska narzędzi w głównej aplikacji. Nie chcę, aby użytkownik wchodził w interakcje z aplikacją przed wybraniem elementu w okienku popover i jego zamknięciem.

Czy brakuje mi tutaj czegoś sprytnego - to jest domyślnie wyłączyć pasek narzędzi? Dlaczego pozostaje aktywny? Czy istnieją wytyczne dotyczące interfejsu użytkownika, które tego wymagają?

Czy powinienem po prostu ustawić pasek narzędzi, aby uniemożliwić interakcję użytkownika, czy jest to nieporządne?

Odpowiedz

1

Co znalazłem pracę najlepiej jest co wspominać jako możliwość w swoim pytaniu:

-(void)showMyPopover 
{ 
    .... 
    self.myToolBar.userInteractionEnabled=NO; 
    [self.myPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES] 
} 

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController 
{ 
    self.myToolBar.userInteractionEnabled=YES; 
    ... 
} 
6

Wygląda iOS dodaje pasek jako „transmisji Przez widzenia” dla popover, kiedy przedstawi go z UIBarButtonItem.

Wystarczy ustawić własności nil passthroughViews z UIPopoverController po przedstawieniu go w następujący sposób:

[self.myPopover presentPopoverFromBarButtonItem:some_item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
dispatch_async(dispatch_get_main_queue(), ^{ self.myPopover.passthroughViews = nil; }); 
+0

Dziękujemy! To mnie uratowało :) – mohamede1945

+0

Lifesaver, na pewno. Nie mogę nawet wyobrazić sobie, dlaczego Apple zrobiłby to domyślnie, ponieważ jest to gwarantowana awaria po każdym ponownym dotknięciu przycisku paska. – MusiGenesis

+0

W systemie iOS 8 należy ustawić przekazywanie widoków w innym runloopie, aby działał. Więcej informacji [tutaj] (http://blog.karmeye.com/2014/11/20/ios8-popovers-and-passthroughviews/). – Karmeye

2

Zastosowanie -[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated] zamiast, który nie pozwala na interakcję z paska narzędzi domyślnie. Na przykład, jeśli przedstawiasz z poziomu UIBarButtonItem z zestawem właściwości customView:

[barButtonItem presentPopoverFromRect:barButtonItem.customView.bounds inView:barButtonItem.customView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];` 
Powiązane problemy