Ich habe eine App, mit der Benutzer Nachrichten an beide senden können. Der Prozess wird ausgeführt, indem die gesendeten Nachrichten in einer lokalen SQLite-Datenbank gespeichert werden, während die Nachrichten tatsächlich an eine Datenbank gesendet werden und mithilfe von Push-Benachrichtigungen die Nachricht an die SQLite-Datenbank des Empfängers gesendet wird. Die Einrichtung habe ich gut funktioniert. Was mich jedoch verwirrt, ist, wie man die eigentliche interaktive Benutzerschnittstelle für den Benutzer einrichtet (ich verwende XCode
). Ich dachte, es sollte ein UITableView
sein, wobei jede Tabellenzelle eine Nachricht darstellt. Bei diesem Ansatz stoße ich jedoch auf einige Anforderungen:
Variable TextView-Größen
Genau wie bei der normalen iOS
messaging muss die Größe von TextView
variabel sein, indem Sie ihre Dimensionen an den gesamten Text in jeder Nachricht anpassen. Ich weiß nicht, wie ich das erreichen soll. Ich habe ein allgemeines Verständnis dafür, wie allgemein Größen variieren kann, aber keine Ahnung, wie man es basierend auf dem Text innerhalb dieser Ansicht dynamisch erstellen kann.
Variable TextView-Positionen
Wie bei normalen iOS
messaging muss die Textansicht wieder entweder auf die rechte oder auf die linke Seite gesetzt werden, je nachdem, ob der Absender der Benutzer war oder mit wem er sich gerade unterhält. Ich weiß auch nicht, wie das geht, weil es die Mitte der Textansicht ändert.
Nicht-Auswahl
Xcode ermöglicht das Drücken von Zellen. Was nach dieser Auswahl geschieht, kann mit der Funktion didSelectRowatIndexPath
tableView erreicht werden. Ich kann das einfach nicht implementieren, aber wenn ich auf die Zelle klicke, wird sie dunkler, um anzuzeigen, dass sie gedrückt wurde. Ich möchte dies eliminieren und gleichzeitig die Möglichkeit behalten, etwas Text auszuwählen und zu kopieren und einzufügen oder so (wie das Messaging normalerweise auf Ihrem Telefon funktioniert).
Andere Ansätze?
Das ist das wahre Fleisch der Frage. Ich habe den obigen Ansatz in Betracht gezogen, da dies alles ist, was ich aufgrund meiner begrenzten Erfahrung mit XCode
UI-Elementen herausgefunden habe. Wenn es einen besseren Ansatz (vielleicht sogar einen Pod oder Framework) für diesen Zweck gibt, würde ich es gerne hören. Ich brauche die Messaging-Benutzeroberfläche nicht, um erstaunlich zu sehen, einfach sauber und knackig.
Ich schlage folgendes vor:
Variable TextView-Größen:
Ich nehme an, dass Sie das automatische Layout verwenden. Wenn Sie es noch nicht tun, ziehen Sie bitte in Betracht, es zu verwenden, da es das Leben viel einfacher macht!
Wenn Sie UITableView
verwenden, können Sie die Höhe von UITableViewCells
abhängig vom tatsächlichen Inhalt dynamisch anpassen, indem Sie selbstanpassende Zellen verwenden. Sie können hier eine Anleitung finden, wie Sie hier tun können.
Variable TextView-Positionen:
Ich nehme an, Sie haben eine UITextView
in einer Tabellenansicht Zelle. In diesem Fall müssen Sie die automatischen Layouteinschränkungen auf die Grenzen der Zelle contentView
der Zelle setzen. Wenn Sie eine benutzerdefinierte Unterklasse von UITableViewCell
definieren, können Sie in dieser Klasse 2 IBOutlet
-Eigenschaften definieren, die verknüpft sind, um die linken und die rechten Layouteinschränkungen anzugeben (z. B. var leftLayoutConstraint: NSLayoutConstraint
). Anschließend können Sie die Eigenschaft constant
der Abhängigkeit wie erforderlich festlegen, wenn die Zelle ausgelegt ist, dh in der Funktion layoutSubviews
der benutzerdefinierten Tabellenansichtszelle.
Nicht auswählbar:
Ich bin mir nicht sicher, was Sie mit "Ich kann das einfach nicht umsetzen" sagen. Stellen Sie sicher, dass Sie die Eigenschaft delegate
von UITableView
auf den Ansichtscontroller festlegen, in dem Sie die Zellenauswahl durchführen möchten. Wenn Sie eine Zelle auswählen, ändert sich die Zellenfarbe standardmäßig. Sie können dies jedoch ändern: Wählen Sie im Storyboard die Prototypzelle der Tabellenansicht aus, und öffnen Sie das Xcode-Dienstprogrammfenster (Schaltfläche ganz oben rechts). Unter "Table view cell" finden Sie "Selection", die Sie auf "None" setzen können.
Ich hoffe, das hilft!
Tags und Links user-interface xcode