Deaktivierung des automatischen Scrollens von UITableView beim Bearbeiten von UITextField in UITableViewCell
Ich bin mit benutzerdefinierten UITableViewCell
s in meinem UITableView
. Jede dieser UITableViewCell
s ist ziemlich groß und enthält eine UITextField
an der Spitze.
Wenn ein Benutzer tippt auf die UITextField
um zu Bearbeiten, wird eine Tastatur angezeigt, und die UITableView
scrollt automatisch, so dass die Zelle am oberen Rand des Bildschirms.
Das problem ist, dass diese Schriftrollen der UITableView
auf den Boden der UITableViewCell
nicht die oberen. Wenn die UITableViewCell
ist hoch und bearbeitet die UITextField
ist an der Spitze, so dass Sie nicht sehen können, die UITextField
. Ich weiß, wie das scrollen der UITableView
programmgesteuert, aber ich weiß einfach nicht, wie zu deaktivieren Sie die automatische scrollen, so dass ich Blättern kann die UITableView
auf meinem eigenen. Wie kann ich dies tun?
InformationsquelleAutor der Frage animal_chin | 2012-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die autoscroll-Verhalten liegt in der
UITableViewController
Funktionalität.Deaktivieren Sie die automatische scrollen fand ich zwei Möglichkeiten:
UITableViewController
einfach einUIViewController
- legen Sie die datasource und delegate auf Ihrem eigenen.viewWillAppear
- Methode, und rufen Sie nicht[super viewWillAppear: animated]
Sowohl Lösung deaktivieren Sie nicht nur die Autoscroll -, aber auch einige andere nette aber nicht essentielle Funktionen, die beschrieben werden in der übersicht über die Äpfel Klasse Referenz:
https://developer.apple.com/documentation/uikit/uitableviewcontroller
InformationsquelleAutor der Antwort Dominic Sander
Definieren Sie die Eigenschaften für Ihre
UITableViewController
:Rufen Sie vor
becomeFirstResponder
:Fügen Sie den folgenden code in deine Tabelle view-controller:
Nach Aufruf
resignFirstResponder
legenscrollDisabled = NO
.InformationsquelleAutor der Antwort william-yang
Können Sie Folgendes tun:
Dann implementieren Sie diese UIScrollViewDelegate Methode
!!! Aber seien Sie gewarnt, dass, wenn der Benutzer tippt in einer Lage, in der UITextField, das bedeckt wird, durch die Tastatur, dann wird es nicht zu scrollen.
Aus meiner Sicht, das beste, was zu tun ist, um sicherzustellen, dass alle Zellen von oben, um dann mit der UITextField enthalten, werden dann sichtbar, wenn anschließend die Tastatur wird sich zeigen.
InformationsquelleAutor der Antwort arturgrigor
Das Problem für mich war nicht so viel, dass es gescrollt aber, dass es dauerte die text-Ansicht bearbeitet werden, die aus dem Bildschirm.
Also anstatt zu verhindern, die Bewegung, die ich gerade rescroll der tableview, wo ich will, wenn die Bearbeitung ausgelöst wird, wie folgt:
InformationsquelleAutor der Antwort infinite-loop
Leider überwiegenden -viewWillAppear: nicht für mich in iOS 8.
Hier ist meine Lösung (wie in UITableViewController Umsetzung):
Da die auto-scrolling-Verhalten aufgerufen wird, indem Sie UIKeyboard s ein - /ausblenden von Benachrichtigungen, die so einfach NICHT zu beachten.
InformationsquelleAutor der Antwort keyOfVv
Ist der beste Weg, um eine Unterklasse
UITableView
und dann überschreibensetContentOffset(_ contentOffset: CGPoint, animated: Bool)
und nicht zu nennensuper.setContentOffset(_ contentOffset: CGPoint, animated: Bool)
. In dieser Methode wird der view controller ist dabei der automatische Bildlauf.InformationsquelleAutor der Antwort juanelomx
Tat, Sie versuchen, "scrollsToTop" - tableview - Eigenschaft auf NEIN. Standardmäßig ist es JA.
InformationsquelleAutor der Antwort cocoakomali
Können Sie versuchen, tun Sie den folgenden:
Dies sollte deaktivieren Sie den scrollview in der tableview.
InformationsquelleAutor der Antwort DHShah01