2015-02-07 24 views
0

這是我的第一個問題。使用UITextViews作爲UITextFields

我目前正在使用Swift的iOS應用程序。我以前使用三個UITextFields用戶輸入他們的數據(這是一個日誌應用程序),但我沒有意識到,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() 
     } 

    } 
} 

回答

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 
} 
+0

嗯,這聽起來像它可能是我的權利,但現在我得到這個錯誤: 類型「()」不符合協議「BooleanLiteralConvertible」 – Matt 2015-02-07 17:43:51

+0

剛將' - > Bool'返回類型添加到函數簽名中。 – rintaro 2015-02-07 17:46:31

+0

Duh!非常感謝! – Matt 2015-02-07 18:15:11