Ich habe versucht, eine UITextView
zu bekommen, um die ganze Woche die Größe zu ändern. Ich sehe nicht, wie das gemacht werden sollte, also habe ich beschlossen, praktisch alle relevanten Codes einzubeziehen.
Ich habe diese Konversationsansicht:
Diese Konversationsansicht ist ein UIViewController
mit einem UITableView
drinnen (mit Einschränkungen). Ich habe eine benutzerdefinierte UIView
Unterklasse ConversationToolbar
als inputAccessoryView
festgelegt (die UIViewController
, die es enthält, kann der erste Responder werden, so dass die Ansicht jederzeit sichtbar ist), die 2 Untersichten enthält. Eine für die Tasten UITextView
und links und rechts und eine für die Emoticons. Die Emoticons werden nur angezeigt, wenn die linke Taste angetippt wird:
Und wenn man ausgewählt wird, wird es in einem schwebenden Etikett angezeigt:
Ich habe jetzt Probleme, diese UITextView
zu skalieren, wenn mehrere Zeilen verwendet werden. Ich habe versucht, alle Frames selbst zu berechnen, aber dann scheint das auf seltsame Weise mit meinen Einschränkungen zu kollidieren. Fast immer ist die UITextView
entweder zu klein oder die Größe ändert sich erst, wenn ich eine andere Taste drücke, um die Ansicht zu aktualisieren. Oder das UITextView
wird über die Tastatur größer oder es verschwindet, wenn die Tastatur geschlossen wird.
Ich habe alle Größenänderungsfunktionen aus meinem Code entfernt und ich würde gerne wissen, was ich tun muss, um diese Größenänderung vorzunehmen.
In meinem ConversationViewController
:
Mit ConversationToolbar.xib
ist:
Und schließlich mein ConversationToolbar.swift
:
Ich habe dieses Problem mit AutoLayout
gelöst. Ich habe eine neue Einschränkung hinzugefügt, die die Höhe meiner UITextField
definiert, und ich setze die constant
dieser Beschränkung in textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
:
Das Problem, das ich hatte, war, dass ich AutoLayout
und UIView.frame
auf verschiedene Einstellungen setzte, was dazu führte, dass sie kämpften.
Ich bin ein Idiot.
Ich habe dieses Problem mit der Größenanpassung von inputAccessoryView
vor langer Zeit gelöst, aber die Probleme mit der richtigen UITextView
resize für iOS8 bis heute nicht behoben.
Hier ist meine Beispielanwendung - github
Es verwendet Frames für iOS7 Größenanpassung ( UITextEffectsWindow
macht Layout manuell und Erstellen von Einschränkungen in der Hierarchie von InputAccessoryView bedeutet Erstellen von Auto-Layout-Engine, die Auto-Layout-Engine-Fehler nach seltsamen Transformationen mit inf / nan Frames verursacht) und Einschränkungen für iOS8 Größenanpassung. Wie auch immer, Layout der Ansichten
innerhalb inputAccessoryView
wird nie richtig gemacht, also müssen wir Rahmenberechnungen durchführen.
Tags und Links ios inputaccessoryview