1

私は、自分のViewControllerにTextFieldとTextViewを持っています。 ViewControllerは、UITextFieldDelegateとUITextViewDelegateの両方、およびそれらのデリゲートメソッドに従います。最初のレスポンダからのTextViewの辞退

戻りボタンをクリックしたときにTextFieldまたはTextViewが最初のレスポンダでなくなることを辞退します。 func textFieldShouldReturn(_ textField: UITextField) -> Bool func textFieldDidEndEditing(_ textField: UITextField) func textViewShouldReturn(_ textView: UITextView) -> Bool func textViewDidEndEditing(_ textView: UITextView)を実装し、対応するShouldReturnの方法でtextField.resignFirstResponder() + textView.resignFirstResponder()を持っています。

戻るボタンをクリックすると、TextFieldは正常に終了し、キーボードは隠れてしまいます。 TextViewの場合、戻りボタンは単にTextViewに新しい行を追加します。 textViewShouldReturn(_:)はまったく呼び出されません。

textFieldShouldReturn(_:)textViewShouldReturn(_:)の違いを教えてもらえますか?TextViewを最初のレスポンダーから退会させるにはどうすればよいですか?

おかげ

import UIKit 

class DetailViewController: UIViewController, UITextViewDelegate, UITextFieldDelegate { 

@IBOutlet weak var date: UITextField! 
@IBOutlet weak var noteText: UITextView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    date.delegate = self 
    noteText.delegate = self 
} 


//MARK: UITextViewDelegate 

func textViewShouldEndEditing(_ textView: UITextView) -> Bool { 
    // Hide the keyboard. 
    textView.resignFirstResponder() 
    return true 
} 


func textViewDidEndEditing(_ textView: UITextView) { 
} 

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { 
    // Hide the keyboard. 
    textField.resignFirstResponder() 
    return true 
} 


func textFieldDidEndEditing(_ textField: UITextField) { 
} 

} 
+0

あなたはTextViewに – Mannopson

+0

がそれにジェスチャーや関数を作成し、 – Mannopson

答えて

2

のTextViewを辞任するトリックがあります。

extension ViewController: UITextViewDelegate { 
    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 

     if text == "\n" { 
      textView.resignFirstResponder() 
      return false 
     } 
     return true 
    } 
} 

のTextViewのデリゲートとして

+0

おかげで大丈夫ではないのTextFieldのための戻るボタンを使用することができます。それでは、textViewShouldReturn(_ :)とは何ですか、いつ使用する必要がありますか? –

+0

UITextViewDelegate関数にはtextViewShouldReturn(_ :)はありません。https://developer.apple.com/reference/uikit/uitextviewdelegate – Lawliet

1

より良い方法をあなたのViewControllerを設定してくださいは、ユーザーが新しい行を追加することもできますように、その機能は同じままする必要がありますので、キーボードを辞任するのTextViewキーボードの上にツールバーを追加することです。

How to add done button on keyboard on top of keyboard in IOS?

関連する問題