使用 UITextViews 作为 UITextFields

Using UITextViews as UITextFields

这是我的第一个问题。

我目前正在 Swift 开发 iOS 应用程序。我以前使用三个 UITextField 供用户输入他们的数据(这是一个日记应用程序),但我没有意识到 UITextField 仅限于一行。

我一直致力于让三个 UITextView 的行为类似于 UITextFields,除了一件事。我正在使用下面的代码来检测用户是否按下了 return 键,以便他们可以开始在下一个 TextView 中输入(就像 return 键在多个 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()
        }

    }
}

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

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

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

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

        // ...

        return false
    }
    return true
}