Ich habe eine UITableViewController
mit vielen Zellen, jede Zelle enthält vier vertikal aufeinander folgende Textfelder, ein Pop-Over wird durch Antippen eines beliebigen Textfelds dargestellt, dieses Pop-Over enthält jedoch ein Textfeld, wenn Sie auf die Tastatur tippen gefeuert und höchstwahrscheinlich wird der Pop-Over verschoben, um zu verhindern, dass die Tastatur sein Textfeld versteckt (dies ist das Standardverhalten des Pop-Over), aber im Hintergrund (die abgeblendete Ansicht) verliert das tableViewController
sein korrektes Scrollen Verhalten, um den Pop über das Darstellen-TextField auf der Spur zu halten, während die Tastatur sichtbar ist.
Ein Beispielprojekt kann hier heruntergeladen werden .
Wie kann ich die Tabellenansicht versetzen, um den Popup-Befehl über das Anzeigen von textField auf dem Bildschirm zu halten, während die Tastatur in diesem Fall sichtbar ist?
Ich habe die bekannte TPKeyboardAvoiding
-Bibliothek ausprobiert, aber sie hat das Problem nicht gelöst.
ps. tableViewController
funktioniert gut für die ersten 3 oder 4 Tastaturauslösungen, verliert aber bei späteren Versuchen das präzise Scrollen.
Screenshot (das grüne Textfeld ist das Textfeld, in dem der Popover-Text angezeigt wird, aber tableViewController
scrollt in das in rot angezeigte falsche Textfeld):
jede Hilfe würde sehr geschätzt werden.
BEARBEITEN:
Diese Frage ist kein Duplikat für: Erstellen eines UITableView-Bildlaufs bei Text Feld ist ausgewählt
da das Textfeld, zu dem ich die Tabellenansicht scrollen muss, diejenige ist, die einen Popover über keine Tastatur auslöst, und scrollToRowAtIndexPath
funktioniert in diesem Fall nicht genau, weil jede Zelle 4 Textfelder enthält.
Hier ist meine Lösung: Ändern in TableViewController.m
1. Registrieren Sie sich für die Tastaturbenachrichtigungen ( UIKeyboardWillShowNotification, UIKeyboardWillHideNotification
)
2. Erstellen Sie lokale Variablen:
%Vor%3. In meiner pleasepopover-Methode:
%Vor%4. Als:
%Vor%5. :
%Vor%Das könnte dir helfen :)
Ändern Sie die gesamte Größe des Ansichtsrahmens.
Zum Beispiel keyboard height is 100
then,
Rufen Sie dann didSelectRowAtIndexPath
method erneut für dieselbe indexPath
auf, damit das Popover erneut geladen wird.
Dies ist nur eine Grundidee, es könnten einige Modifikationen erforderlich sein, um genaues Verhalten zu erreichen.
Hoffe, das wird dir helfen.
Registrieren Sie sich für UIKeyboardWillShowNotification . Wenn dieser Selektor ausgelöst wird, rufen Sie Ihren Popover-Code auf:
%Vor%Der Grund dafür ist, dass sich das iOS selbst damit beschäftigt, das Popover zu präsentieren und seinen Frame zu bearbeiten. Daher ist es in der Regel eine gute Übung, den Pop-Over nach der Anzeige der Tastatur zu präsentieren.
Hoffe das hilft ..
Tags und Links objective-c iphone uitableview ios