Ich bin mit einem UINavigation bar ein popover in iPad anzeigt. Auf der zweiten Ansicht habe ich einen UISearchController, der eine Tastatur anzeigen kann. Die Tastatur drückt den popover auf, was in Ordnung ist, aber wenn ich die Schaltfläche ‚Zurück‘ auf der UINavigation Bar jetzt schieben die Tastatur entlässt was in Ordnung ist, aber die popover rutscht nicht wieder auf seine ursprüngliche Position. Wer weiß, wie man das repariert? Vielen Dank!UIPopoverController nicht in der ursprünglichen Position zu bewegen, nachdem Tastatur rutscht wieder nach unten
Antwort
Ok, damit ich herausgefunden tatsächlich (glaube ich), was Ihre Frage stellt ... und nur für den Fall jemand stolpert dies von Google, ich dachte, ich würde antworten, wie ich es tat. Es fühlt sich an wie ein Hack Job aber ich habe nicht zu tun, es kann eine andere Art und Weise finden.
In der Steuerung, die die Tastatur bringt, ich habe es eine Benachrichtigung hinterlassen hatte, wenn die Tastatur entlässt:
[aTextField resignFirstResponder];
[[NSNotificationCenter defaultCenter] postNotificationName:@"movePopups" object:nil];
Dann zurück auf meinem Home-Bildschirm-Controller, der die UIPopover steuert, fügte ich einen Zuhörer:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movePopUpToRightLocation)
name:@"movePopups"
object:nil];
innerhalb der init. Achten Sie darauf, sich daran zu erinnern den Hörer in Ihrem dealloc für guten Programmierstil zu entfernen:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Also dann, wenn ich Benachrichtigung, dass die Tastatur verschwindet, erhalte ich einen Verweis auf den Knopf, der die popover von auftaucht, und nur haben es wieder erscheinen direkt von ihm:
}
ich habe keine Kontrollen für die hinzugefügt popup es ist, aber ich kann einfach tun, wenn ich mehr als 1 Art von popover/
-(void)movePopUpToRightLocation {
NSLog(@"move pop up to right location");
if (morePopUp) {
UIBarButtonItem *barButtonItem = (UIBarButtonItem *)[[bottomToolBar items] objectAtIndex:0];
[morePopUp presentPopoverFromBarButtonItem:barButtonItem
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
}
Knopf, von dem es erscheinen würde. Aber das ist die Grundvoraussetzung, von der Sie ausgehen können.
Hoffe es hilft!
Sie könnten auch für die UIKeyboardDidHideNotification irgendwo im initializer registrieren.
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movePopoverBack:) name:UIKeyboardDidHideNotification object:nil];
Dieser Code verschiebt den popover zurück:
- (void)movePopoverBack:(id)sender {
if ([self.settingsPopoverController isPopoverVisible]) {
[self performSelector:@selector(hidePopover) withObject:nil afterDelay:0.1];
[self performSelector:@selector(movePopoverBack) withObject:nil afterDelay:0.5];
}
}
- (void)hidePopover {
[self.settingsPopoverController dismissPopoverAnimated:YES];
}
- (void)movePopoverBack {
[self.settingsPopoverController
presentPopoverFromBarButtonItem:self.bottomToolbar.settingsButton
permittedArrowDirections:UIPopoverArrowDirectionDown
animated:YES];
}
ich es nicht ohne die Verzögerungen Arbeit bekommen haben, aber dies scheint für ein aktuelles Projekt akzeptabel. Hoffe es hilft jemandem.
Nachdem Sie die Zurück-Taste gedrückt haben, sollten Sie manuell resignFirstResponder
für das Suchfeld aufrufen (zum Beispiel innerhalb viewDidDisappear
).
Dies sollte helfen, aber das Problem noch unter iOS 4 wiedergegeben wird, wenn das Gerät mit HDer ome Taste auf der linken Seite
Dank im Querformat ist! Das ist hilfreich für jemanden, der mir sicher ist. – paranoidroid