How to replace detected link with custom title for that link?
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne mit den im Issue gezeigten Einstiegspunkten enabledDetectors, detectorAttributes und MessageKind.attributedText und verfolge anschließend, wie Detector-Treffer zu antippbaren Links werden und didSelectUrl erreichen. Überprüfe das Verhalten anhand des benutzerdefinierten attributierten Texts super link 🌼 und ermittle, was erhalten bleiben muss, damit der angezeigte Titel antippbar bleibt. Erledigt ist es, wenn erkannte URLs den benutzerdefinierten Titel anzeigen und weiterhin didSelectUrl aufrufen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
These are my delegate methods for my chat:
func enabledDetectors(for _: MessageType, at _: IndexPath, in _: MessagesCollectionView) -> [DetectorType] {
[.url, .phoneNumber]
}
func detectorAttributes(
for _: DetectorType,
and message: MessageType,
at _: IndexPath
) -> [NSAttributedString.Key: Any] {
[.underlineStyle: 1, .foregroundColor: isFromCurrentSender(message: message) ? UIColor.white : UIColor.black]
}
And this is how it looks now:
I have tried to replace attributedString for messageKind like this:
var kind: MessageKind {
return .attributedText(attributedString.prettyLinked)
}
where:
extension NSAttributedString {
var prettyLinked: NSAttributedString {
let mutableString = NSMutableAttributedString(attributedString: self)
do {
let detector = try NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
let fullRange = NSRange(location: 0, length: string.utf16.count)
let matches = detector.matches(in: string, range: fullRange)
matches.reversed().forEach { match in
let range = match.range
let link = (string as NSString).substring(with: range)
let prettyLink = NSAttributedString(string: "super link 🌼", attributes: [.link: link])
mutableString.replaceCharacters(in: range, with: prettyLink)
}
} catch {}
return NSAttributedString(attributedString: mutableString)
}
}
The result is like:
But it is not tappable, after that change. Why?
What do I want to achieve is to replace that urls with any string, for example here is super link 🌼. And then didSelectUrl is called as always. Is it possible with MessageKit?
- Vorherrschende Sprache
- Swift
- Sterne
- 6.3k
- Forks
- 1.2k
- Ø Merge
- 23 Std. 49 Min.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus MessageKit/MessageKit
-
Keyboard bugOffenbug?
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
MessageKit/MessageKit#1901 ·
-
question
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
MessageKit/MessageKit#1888 · 2 Kommentare ·
-
Transparent navigation bar in messageInputBar but messagesCollectionView is not shown in these areasOffenfeature request
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
MessageKit/MessageKit#1884 · 1 Kommentar ·
-
feature request
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
MessageKit/MessageKit#1880 ·
-
bug?
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
MessageKit/MessageKit#1878 ·
Alle Issues in MessageKit/MessageKit
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
DataDog/dd-sdk-ios#3293 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
[Bug]: container logs -f exits immediately with no output when the container's log file is emptyOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
mozilla-mobile/firefox-ios#35996 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
wultra/ssl-pinning-ios#60 ·
-
fix: pre-push hook이 worktree에서 GIT_DIR을 상속해 SwiftPM 패키지 해석에 실패Evtl. vergeben @zaehorang hat das vor 1 Tag übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100

