使用UITextViews作为UITextFields

时间:2015-02-07 04:02:59

标签: ios swift uitextfield uitextview

这是我的第一个问题。

我目前正在使用Swift中的iOS应用。我以前使用三个UITextField来输入他们的数据(它是一个日记应用程序),但我还没有意识到UITextField只限于一行。

我已经致力于让三个UITextView的行为像UITextFields,除了一件事。我使用下面的代码来检测用户是否按下了返回键,以便他们可以开始在下一个TextView中键入内容(就像返回键在多个TextFields中的行为一样)。

我的一个问题是,当光标向下移动到下一个TextView时,它会带来新行(" \ n")!我已经尝试了许多不同的方法来解决这个问题,似乎没有任何工作。有任何想法吗?

谢谢, 马特

func textView(textView: UITextView!, shouldChangeTextInRange: NSRange, replacementText: NSString!) {
    if(replacementText == "\n") {
        if(textView == firstTextView) 
        {
            firstTextView.resignFirstResponder()
            secondTextView.becomeFirstResponder()
        }

        if(textView == secondTextView)
        {
            secondTextView.resignFirstResponder()
            thirdTextView.becomeFirstResponder()
        }

        if(textView == thirdTextView)
        {
            thirdTextView.resignFirstResponder()
        }

    }
}

1 个答案:

答案 0 :(得分:2)

据我所知,textView(_:shouldChangeTextInRange:replacementText:) must return Bool value

optional func textView(_ textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool

当您返回false时,它会取消文本的更改。所以我认为你应该:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if(replacementText == "\n") {

        // ...

        return false
    }
    return true
}