UITextView becomeFirstResponder() 添加新行

3

我对iOS/Swift还很新,当我将UITextView设置为第一响应者(从上一个UITextField触摸next时)时,它会自动在UITextView中插入一个新行。 代码如下:

class MyViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {
  @IBOutlet weak var nameTextField: UITextField!
  @IBOutlet weak var descriptionTextView: UITextView!

  override func viewDidLoad() {
    nameTextField.delegate = self
    descriptionTextView.delegate = self
  }

  func textFieldShouldReturn(nameTextField: UITextField) -> Bool {
    nameTextField.resignFirstResponder()
    descriptionTextView.becomeFirstResponder()
    return true
  }

  func textView(descriptionTextView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if (text == "\n") {
      descriptionTextView.resignFirstResponder()
      return false
    }
    return true
  }
}

"A new line is always added and I press 'next', even if there's already text or a new line." 在第一次按下“下一个”时,光标会自动定位在第二行。enter image description here 如果我回到文本框并再次按下“下一个”,光标会定位在第三行。enter image description here

我还没有检查,但我认为对于UITextView的文本来说,总是以换行符结尾是正常的(这样所有行都会以一个换行符结尾),因此在第一次使用时,如果现有文本为空,则会添加一个。 - jcaron
我完成了我的问题,即使其中有文本也会发生。 - Cohars
3
可能是UITextView添加了意外的新行?的重复问题。 - mbelsky
1个回答

10

textFieldShouldReturn 中返回 false。

func textFieldShouldReturn(nameTextField: UITextField) -> Bool {
    nameTextField.resignFirstResponder()
    descriptionTextView.becomeFirstResponder()
    return false
}

更多细节请点击此处


哇!节省了我的时间。谢谢! - Saurabh Prajapati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接