小编Ben*_*iid的帖子

从Swift中的UITextView中获取单词

我知道这个问题已经在Objective-C中解决了,但我在Swift中没有看到任何解决方案.我试图从这篇文章转换解决方案代码,但我收到错误:

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为问题出在这一行(见这里的错误):

 var textView: UITextView = recognizer.view as UITextView
Run Code Online (Sandbox Code Playgroud)

...我根据这一行从Objective-C转换而来:

 UITextView *textView = (UITextView *)recognizer.view;
Run Code Online (Sandbox Code Playgroud)

最后,我也对如何调用此函数表示怀疑.据我了解,该函数应该传递给viewDidLoad()中的Selector,如下所示:

 let aSelector: Selector = "textTapped:"   

 let tapGesture = UITapGestureRecognizer(target: self, action: aSelector) …
Run Code Online (Sandbox Code Playgroud)

uitextview ios swift

12
推荐指数
2
解决办法
7681
查看次数

在Swift中将两个参数传递给NSTimer

我有一个函数,包含TextView中的文本字符串.我希望随着时间的推移改变该文本的淡化.这不是我对如何褪色的实现,而是如何将两个参数(alpha值和应该褪色的字符范围)传递给NSTimer中的Selector.

我看过这个问题,但这并没有给我一个答案.

这就是我现在所拥有的:

func someFunc(){

    var timer: NSTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("val:"), userInfo: 5, "someString", repeats: true)

}


func val(val1: Int, val2: String){

    println("printing \(val1) and \(val2)")

}
Run Code Online (Sandbox Code Playgroud)

然而,它给我一个"额外参数'选择器'调用'错误.我需要能够传递两个参数,但我也无法正确传递一个参数; 从函数中删除val2并删除"someString",所以我只传递一个参数,导致函数在每个时间步打印"print 140611230609088"行.

arguments nstimer ios swift

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

ios ×2

swift ×2

arguments ×1

nstimer ×1

uitextview ×1