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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage