Welche Benutzeroberfläche ist für die Messaging-Funktionalität eingerichtet?

7

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.

    
Alek Piasecki 06.09.2017, 16:50
quelle

1 Antwort

2

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!

    
Reinhard Männer 14.09.2017, 10:48
quelle

Tags und Links