2017-09-14 74 views

回答

0

我只是測試這一點。看來,以滿足您的要求:

class ViewController: UIViewController, UITextViewDelegate { 
    @IBOutlet weak var myTextView: UITextView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     myTextView.delegate = self 
    } 

    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool 
    { 
     if(text == "\n") 
     { 
      view.endEditing(true) 
      return false 
     } 
     else 
     { 
      return true 
     } 
    } 
} 
+0

謝謝你如何知道它是返回還是完成? –

+0

從這個意義上說,如果你已經指定了你是該呼叫的代表,那麼你將得到該呼叫並不重要。可以完成,去,下一步,無論你在界面生成器中選擇,還是以編程方式設置。 –

+0

@ChrisG。你是否設置了代表? –

1

這可能是在textViewDidChange通過尋找一個換行符"\n"做。

否則,一個更好的想法是通過檢查replacementText == "\n"

示例使用func textView(UITextView, shouldChangeTextIn: NSRange, replacementText: String)

func textView(UITextView, shouldChangeTextIn: NSRange, replacementText: String){ 
    if replacementText == "\n"{ 
     // do your stuff here 
     // return false here, if you want to disable user from adding newline 
    } 
    // otherwise, it will return true and the text will be replaced 
    return true 
} 
+0

謝謝,但是這將是bouth的進入和ok鍵。我需要用戶能夠添加新行。也是「\ n」:-) –

+0

哪個確定按鈕?你的意思是「完成」按鈕? AFAIK,在UITextView中產生「\ n」。 – ramacode

+0

謝謝 - 回車鍵 - 查看更新的問題。 –

0

使用textFieldShouldReturn:方法

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    if textField == yourTextField { 
     //do something 
    } 

    return true 
} 
相關問題