UITextViewを使用すると、キーボードで「完了」または他のボタンが押されたことをどのように知ることができますか?UITextView完了ボタンアクション - リターンキーの場合
textViewDidChange
のすべての文字を調べる必要がありますか?
IB選択UITextView:
UITextViewを使用すると、キーボードで「完了」または他のボタンが押されたことをどのように知ることができますか?UITextView完了ボタンアクション - リターンキーの場合
textViewDidChange
のすべての文字を調べる必要がありますか?
IB選択UITextView:
私はこれをテストしました。
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
}
}
}
その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
}
おかげで、それが入力し、[OK]ボタンのbouthになりますあなたの要件を満たすように思われます。新しい行を追加できるようにする必要があります。またそれは "\ n"です:-) –
どのokボタン? 「完了」ボタンを意味しますか? AFAIKは、UITextViewで "\ n"を生成します。 – ramacode
ありがとうございます - Returnキー - 更新された質問をご覧ください。 –
使用textFieldShouldReturn:方法
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == yourTextField {
//do something
}
return true
}
ありがとうございました。 –
あなたが指定した場合は、通話の代理人がその通話を受けることになりますが、それは重要ではありません。完了、実行、次に、Interface Builderで選択したものであれ、プログラムで設定したものであれ。 –
@ChrisG。デリゲートを設定しましたか? –