Größe des Textfelds in der EingabeAccessoryView

8

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 :

%Vor%

Mit ConversationToolbar.xib ist:

%Vor%

Und schließlich mein ConversationToolbar.swift :

%Vor%     
vrwim 11.03.2015, 09:45
quelle

2 Antworten

8

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 :

%Vor%

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.

    
vrwim 17.03.2015, 16:31
quelle
1

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.

    
Nikita Ivaniushchenko 16.03.2015 23:31
quelle

Tags und Links