2013-06-03 12 views
6

Tło:Jak zmienić współrzędne popover w locie

muszę wyświetlać popover z ImageView (nie Rect barbutton), który ma popover wyszukiwania field.The musi być przedstawiony z punktu A UIModalPresentationFormSheet.This powodzeniem osiągnąć

problem:

problem jestem stoi (w trybie Landscape) jest wtedy, gdy klawiatura jest pokazany modalne przesunięcia formularzem się a wraz z nim moja rama dla popover. Stąd popover pozostaje w jego pierwotnej pozycji (przed pokazaniem klawiatury), a przedstawiony prostokąt jest przesunięty w górę. Zastosowane rozwiązanie to reprezentacja (using presentPopoverFromRect) popover w -(void)didShowKeyBoard:(NSNotification*) notif ze zmienionego recta i zrób to samo w -(void)didhideKeyBoard:(NSNotification*) notif. To działa dobrze, ale przejście jest bardzo szybkie i sprężyste. Jak zatem uzyskać płynne przejście?

Co Próbowałem

Próbowałem:

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationDuration:5.0f]; 
[_statePopover presentPopoverFromRect:stateHandler.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO]; 
[UIView commitAnimations]; 

ale to nie działa.

Czy ktoś może skierować mnie do właściwego sposobu na zrobienie tego?
Każda pomoc jest bardzo ceniona.

+0

Czy próbowałeś zmienić współrzędne popover zgodnie z orientacją? – Radu

+0

@Radu W portretie nie napotykam powyższego problemu. W pejzażu, jak stwierdziłem w moim pytaniu, przedstawiam je ponownie z rect, która już zmieniła swoją pozycję. Popover następnie poprawnie przyjmuje nową pozycję przesuniętego prostokąta. Problem, przed którym stoję, jest w trakcie przejścia. Nie jest gładki. –

+0

Miałem tego rodzaju problem w innych miejscach Spróbuję umieścić cały kod przejścia w animacji UIView - użyłem tej sztuczki dla jakiejś klawiatury i animacji Tabeli może to zadziała dla ciebie – Radu

Odpowiedz

1

Cóż, częściowo rozwiązałem mój problem. Użyłem wysyłkę opóźnić presentation.It popover idzie jak podano poniżej:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_USEC), dispatch_get_current_queue(), ^{ 
    [_statePopover presentPopoverFromRect:statehandler.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
}); 

Działa to wymagane, gdy moja klawiatura zostaje odrzucona, ale ten sam fragment nie dostarczy pożądanego rezultatu, gdy klawiatura jest pokazany.

Proszę zostaw komentarz, jeśli ktoś się dowie, dlaczego zachowuje się w ten sposób. Dziękuję!

Powiązane problemy