Scrollen Sie in der Tabellenansicht zum Pop-Over-Presentation-Textfeld, wenn die Tastatur durch ein Textfeld im Pop-Over-Fenster ausgelöst wird

8

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.

    
JAHelia 29.12.2014, 14:26
quelle

5 Antworten

2

Verwenden Sie (CGRect) convertRect: (CGRect) rect inView: (UIView *) view , um die Zellenposition in der Supervision der Tabellenansichten zu erhalten und dementsprechend den Offset der Tabellenansicht zu behandeln.

    
vje1998 21.09.2015 06:59
quelle
1

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 :)

    
Yuyutsu 03.01.2015 14:55
quelle
0

Ändern Sie die gesamte Größe des Ansichtsrahmens.

Zum Beispiel keyboard height is 100 then,

%Vor%

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.

    
Mrunal 31.12.2014 14:40
quelle
0

Wie wäre es, wenn Sie das Tag (00 01 02 03, 10 11 12 13 ... usw.) für jedes UITextfeld in der Zelle hinzufügen, Von Zehnerziffer können Sie wissen, welche Zelle, aus einzelnen Ziffern Sie wissen, welches Textfeld.

    
Kobe Yu 04.01.2015 04:19
quelle
0

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 ..

    
Henit Nathwani 06.01.2015 08:07
quelle