Lassen Sie sich in Swift von UITextView informieren
Ich weiß, dass dieses Problem in Objective-C gelöst wurde, habe aber in Swift keine Lösung dafür gefunden. Ich habe versucht, den Lösungscode von zu konvertierendiese Post, aber ich erhalte Fehler:
func textTapped(recognizer: UITapGestureRecognizer){
var textView: UITextView = recognizer.view as UITextView
var layoutManager: NSLayoutManager = textView.layoutManager
var location: CGPoint = recognizer.locationInView(textView)
location.x -= textView.textContainerInset.left
location.y -= textView.textContainerInset.top
var charIndex: Int
charIndex = layoutManager.characterIndexForPoint(location, inTextContainer: textView.textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
if charIndex < textView.textStorage.length {
// do the stuff
println(charIndex)
}
}
Ich denke das Problem liegt in dieser Zeile (siehe FehlerHier):
var textView: UITextView = recognizer.view as UITextView
... die ich von Objective-C basierend auf dieser Zeile konvertiert habe:
UITextView *textView = (UITextView *)recognizer.view;
Schließlich bin ich auch im Zweifel, wie diese Funktion aufgerufen werden soll. Soweit ich weiß, sollte die Funktion in viewDidLoad () an einen Selector übergeben werden:
let aSelector: Selector = "textTapped:"
let tapGesture = UITapGestureRecognizer(target: self, action: aSelector)
tapGesture.numberOfTapsRequired = 1
view.addGestureRecognizer(tapGesture)
Da ich den oben genannten Fehler erhalte, bin ich mir nicht sicher, ob es funktionieren würde. Aber ich denke, dass ich den Parameter in der Funktion textTapped (Erkenner) auch in den Selektor übergeben müsste. Allerdings habe ich gelesen, dass man die Funktion nur übergeben kann und keine Parameter.