1

내 ViewController에서 TextField 및 TextView가 있습니다. ViewController는 UITextFieldDelegate 및 UITextViewDelegate와 그 대리자 메서드를 따릅니다.빠른 응답 첫 번째 응답자에서 TextView 사임

Return 버튼을 클릭하면 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()을 사용했습니다.

Return 버튼을 클릭하면 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

당신은 텍스트 뷰 – Mannopson

+0

는 제스처 나에 함수를 작성하지 TextField의에 대한 반환 버튼을 사용할 수 있습니다 그리고 당신은 잘 – Mannopson

답변

2

텍스트 뷰를 사임 트릭이 있습니다.

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

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

텍스트 뷰의 대리인으로

+0

감사합니다 수 있습니다. 그렇다면 textViewShouldReturn (_ :)은 무엇이고 언제 사용해야합니까? –

+0

UITextViewDelegate 함수에 textViewShouldReturn (_ :)이 없습니다. https://developer.apple.com/reference/uikit/uitextviewdelegate – Lawliet

1

더 나은 방법을 당신의 ViewController를 설정해야합니다 사용자가 새로운 라인을 추가 할 수 있기 때문에 그 기능이 동일하게 유지해야하므로, 키보드를 사임 텍스트 뷰 키보드를 통해 도구 모음을 추가하는 것입니다.

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