这是我的第一个问题。
我目前正在使用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()
}
}
}
答案 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
}