如何检测何时选择 TextView 但在它成为第一响应者之前?

How to detect when a TextView is selected but before it becomes first responder?

我希望滚动视图与键盘同步移动。为了将它移动到正确的位置,我需要获得对作为第一响应者的 textview 的引用。如果我在它成为第一响应者之后得到参考,那么滚动就会滞后于键盘的出现。如果我在textview成为第一响应者之后将第一响应者分配给一个变量,那么当键盘移动时第一响应者引用将不可用。

您可以在系统显示键盘之前使用 UITextViewDelegate.textViewShouldBeginEditing(_:)

获取您的第一响应者参考
import UIKit

class ViewController: UIViewController, UITextViewDelegate {
    var currentFirstResponder: UITextView?
    
    // iOS will call this before it shows keyboard
    // If you return true, it will show keyboard
    // If you return false, it will not show keyboard
    func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
        currentFirstResponder = textView
        return true
    }
}