UITextView becomeFirstResponder()添加新行

时间:2015-12-15 14:01:33

标签: ios swift

我对iOS / Swift很陌生,在设置UITextView作为第一响应者时(从上一个next触摸UITextField时),我有一种奇怪的行为。它会自动在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
  }
}

总是会添加一个新行,即使已有文字或新行,我也会按next。 在第一个next这里发生了什么(光标自动在第二行)。 enter image description here

如果我返回文本字段并再次按下,光标位于第3行行。 enter image description here

1 个答案:

答案 0 :(得分:10)

textFieldShouldReturn

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

更多详情https://dl.google.com/android/repository/platform-tools_r23.0.1-linux.zip