Xcode 9 UITextView-Links sind nicht mehr anklickbar

9

Vor Xcode 9 und iOS 11 hatte ich ein UITextView in einem UITableViewCell , das mehrere Links enthielt. Jeder Link funktionierte wie erwartet, seit dem Upgrade auf iOS 11 und Xcode 9 funktionieren die Links jedoch nicht mehr.

Die UITextView scheint keine Touch-Interaktion mit func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool feuern zu erkennen.

Hat jemand anderes nach dem Upgrade dasselbe Problem gefunden?

    
user2562126 10.09.2017, 18:00
quelle

2 Antworten

3

Es stellte sich heraus, dass es schließlich kein Problem gab. Änderungen an der Art und Weise, wie UITextView auf Berührungen in iOS11 reagiert, bedeutet, dass das Klicken auf Links mehr von einem Drücken erfordert als nur von einem Tippen, das zuvor in iOS10 funktioniert hat. Ich denke, das könnte etwas damit zu tun haben, dass man in iOS11 nun Links drücken und ziehen kann, die auch Details der URL anzeigen. Daher wird eine festere Presse benötigt, damit die UITextView die angetippte Verbindung registriert.

    
user2562126 12.09.2017 07:15
quelle
0

Speziell in iOS 11.0 und 11.1 (nicht später in 11.2+, nicht früher in 10.x) wird textView(_:shouldInteractWith:in:interaction) von UITextViewDelegate von einer Interaktion mit UILongPressGestureRecognizer anstelle von UITapGestureRecognizer aufgerufen.

Für diese beiden iOS-Versionen benötigt der Benutzer eine kleine Verzögerung, die lange auf anstatt auf tippen für eine native Interaktion mit UITextView-Links gedrückt wird.

Wenn der Rückruf für diese beiden iOS-Versionen selbst bei langem Drücken nicht aufgerufen wird, haben Sie wahrscheinlich mit Gestenerkennern zu tun gehabt, indem Sie Ihre UITextView-Klasse von der Unterklasse absetzen und gestureRecognizerShouldBegin(_) überschreiben. um false zurückzugeben, wenn dies nicht der Fall ist.

Hier ist ein Beispiel für eine schnelle partielle Problemumgehung für gestureRecognizerShouldBegin(_) , die Lupe / Lupe lange drücken (wenn das die gewünschte Absicht der Überschreibung ist), aber trotzdem lange drücken auf Links:

%Vor%

Eine Alternative besteht darin, sowohl UILongPressGestureRecognizer als auch UITapGestureRecognizer vollständig zu verbieten, außer für einen selbst erstellten UITapGestureRecognizer, den Sie selbst erstellt hätten, um mit Links zu interagieren.

    
Cœur 28.03.2018 10:19
quelle

Tags und Links