gpt4 book ai didi

ios - Swift 从第一响应者那里辞职 TextView

转载 作者:搜寻专家 更新时间:2023-11-01 06:03:21 34 4
gpt4 key购买 nike

我的 ViewController 中有一个 TextField 和一个 TextView。 ViewController 遵循 UITextFieldDelegate 和 UITextViewDelegate 及其委托(delegate)方法。

我想在单击返回按钮时让 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) {
}

}

最佳答案

有一个技巧可以让 textview 退出。

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

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

确保将您的 ViewController 设置为 textview 的委托(delegate)

关于ios - Swift 从第一响应者那里辞职 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44037832/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com