Hallo Ich versuche, eine einfache Chat-Anwendung zu erstellen, wo Benutzer Nachrichten und Fotos senden können. Mir fällt es schwer, herauszufinden, wie man mehrere Nachrichten bei längerem Drücken einer einzelnen Nachricht am besten auswählt und löscht.So wählen und löschen Sie Nachrichten wie whatsapp oder iMessage auf ios mit swift
Ich habe Sammlungsansicht verwendet, um die Seite anzuzeigen. Momentan verwende ich die Sammlungsansicht didSelect-Methode, um auf die Seite der Chat-Bubble-Bildansicht zu klicken und die Schaltfläche für diese bestimmte Zelle auszuwählen. Aber ich kann keine Kontrollkästchen für jede Nachricht anhängen. Ich kann auch nicht lange auf die Chat-Blase Bildansicht drücken.
Ich habe auch versucht, Bildanzeige Tippen Sie auf Chat-Blase, aber mit diesem muss ich die Sammlung anzeigen neu laden. Gibt es eine beste Möglichkeit, mehrere Nachrichten zu löschen?
Jede Hilfe ist willkommen
Dank
Im Folgenden finden Sie den Beispielcode
Code für das Kontrollkästchen Bild von bestimmten Zelle zu verändern.
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
inputTextField.endEditing(true)
let cell: ChatLogMessageCell? = collectionView.cellForItem(at: indexPath) as! ChatLogMessageCell?
cell?.checkbox.isHidden = false
selectAll = true
if cell?.isSelected == true{
cell?.checkbox.image = UIImage(named: "checkedimage")
}else{
cell?.checkbox.image = UIImage(named: "uncheckedimage")
}
Code zum Tippen auf Chat-Blase, um Kontrollkästchen an alle Zellen anzuhängen.
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: chatcellId, for: indexPath) as! ChatLogMessageCell
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.imageTapped))
cell.bubbleImageView.addGestureRecognizer(tapGesture)
cell.bubbleImageView.isUserInteractionEnabled = true
if selectAll == true{
cell.checkbox.isHidden = false
}else{
cell.checkbox.isHidden = true
}}
Wenn Sprechblase angezapft Sammlung Ansicht neu geladen wird die Checkbox-Taste, um alle Zellen
func imageTapped(){
selectAll = true
self.collectionView?.reloadData()
}
Was ich schließlich versucht zu tun bin anhängen ist auswählen und Löschen von Nachrichten wie WhatsApp oder iMessage (Above Code ist in der Nähe von iMessage-Funktionalität) tut. Also bin ich auch offen für komplette Codeänderungen. Vielen Dank.
aktualisierten Code
override func viewDidLoad()
{
super.viewDidLoad()
let lpgr = UILongPressGestureRecognizer(target: self,
action: #selector(handleLongPress))
lpgr.minimumPressDuration = 0.5
lpgr.delaysTouchesBegan = true
lpgr.delegate = self
self.collectionView?.addGestureRecognizer(lpgr)
}
func handleLongPress(gestureReconizer: UILongPressGestureRecognizer) {
let p = gestureReconizer.location(in: self.collectionView)
let indexPath = self.collectionView?.indexPathForItem(at: p)
if let index = indexPath {
let cell: ChatLogMessageCell? = collectionView?.cellForItem(at: index) as! ChatLogMessageCell?
self.collectionView?.allowsMultipleSelection = true
for cell in collectionView!.visibleCells as! [ChatLogMessageCell] {
let indexPath = collectionView?.indexPath(for: cell as ChatLogMessageCell)
cell.checkbutton.isHidden = false
if selectedMsgs.contains((messages?[((indexPath)?.item)!])!) {
cell?.checkbox.image = UIImage(named: "checkedimage")
}
else {
cell?.checkbox.image = UIImage(named: "uncheckedimage")
}
}
} else {
print("Could not find index path")
}
}
Auf lange drücken Kontrollkästchen erscheinen auf allen sichtbaren Zellen, sondern tippen Sie auf Chat-Blase funktioniert nicht.
Sie könnten Vorschläge von diesem Beitrag http: // stackoverflow verwenden.com/questions/29241691/how-do-i-use-uilongpressgesture-recognizer-mit-einem-uicollectionviewcell-in-swift, um die Long-Press-Funktionalität zu erreichen – danielmhanover
Vielen Dank @danielmhanover. Ich bin immer noch nicht in der Lage, die Auswahl im Chat-Blase funktionieren (Wenn ich neben der Sprechblase berühren, funktioniert die Auswahl). – Shravya
Ist die Chat-Blase ein uiimageview? Achten Sie darauf, userInteractionEnabled auf "true" zu setzen. – danielmhanover