2011-08-20 11 views
9

Zastanawiam się, czy istnieje sposób, aby zatrzymać popover iPada od automatycznego zwolnienia za każdym razem, gdy dotkniesz ekranu poza popover? Jeśli nie, czy istnieje metoda podobna do "popoverDidDismiss", którą mógłbym wywołać, aby powiedzieć, kiedy popover został zwolniony?Stop UIPopover automatycznie odrzucił

Odpowiedz

25

Tak, można. Jest to bezpośrednio z dokumentacji Apple.

Gdy popover zostanie odrzucony z powodu kliknięcia użytkownika poza widokiem popover, popover automatycznie powiadomi swojego delegata o akcji. Jeśli przekazujesz delegata, możesz użyć tego obiektu, aby zapobiec zwolnieniu popover lub wykonać dodatkowe działania w odpowiedzi na zwolnienie. Metoda delegatów popoverControllerShouldDismissPopover: pozwala kontrolować, czy popover powinien zostać odrzucony. Jeśli twój delegat nie wdroży metody lub jeśli twoja implementacja zwróci TAK, kontroler odrzuci popover i wyśle ​​do delegata wiadomość popoverControllerDidDismissPopover:.

Wystarczy powrócić NO metody delegata popoverControllerShouldDismissPopover:

Tu jest link do dalszego czytania.

Popover Guide

+0

Dzięki za szybkie Odpowiadać. Próbowałem to wdrożyć i wygląda na to, że nie działa. Powinienem umieścić go w .m dla widoku, w którym pojawia się popover, a nie widoku wewnątrz popover, prawda? –

+0

czy to działa? Jeśli tak to jak? jeśli nie, dlaczego jest oznaczona jako poprawna odpowiedź? – ngb

+0

Czy pamiętasz, aby ustawić kontroler widoku jako delegata dla kontrolera typu popover? –

4
- (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
{ 
    return NO; 
} 

Że zrobi to za ciebie i można przypisać konkretny przedmiot przycisk paska lub coś innego w swoim popover oddalić popover.

+0

Próbowałem to wdrożyć i wydaje się, że nie działa. Powinienem umieścić go w .m dla widoku, w którym pojawia się popover, a nie widoku wewnątrz popover, prawda? –

+0

Tak. Czy wskazałeś implementację UIPopoverControllerDelegate w pliku nagłówkowym? – Bourne

+0

Myślę, że tak. W pliku zawierającym zawartość popover, w .h Mam protocol OptionsViewControllerDelegate - (void) didPick: (NSString *) ciąg; koniec delegat id; oraz w .m: zsyntezować delegata; oraz w .h pliku, w którym pojawia się okienko Popover Mam: interface exampleViewController: UIViewController { UIPopoverController * popoverController; OptionsViewController * optionsViewController; } Następnie zsyntetyzuj UIpopoverController i OptionsViewController w .m. Czy brakuje mi czegoś? Dzięki. –

1

nawet u można użyć

self.modallnpopover = yes;

jeśli chcesz odrzucić go w danym widoku

self.modallnpopover = no;

Jeśli nie chcesz, aby trwale

Powiązane problemy