RxSwift は、ページ上の任意の場所をクリックしてキーボードを閉じるように実装します。

iOS 開発では、キーボードを閉じる操作を実装する必要があることがよくあります。一般的には、ページの空白部分をクリックしてキーボードを閉じます。一般的に使用される方法は 2 つあります。

プロキシ メソッドで実装されます。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        textFiled.resignFirstResponder() //方法一
        self.view.endEditing(true) //方法二
    }

ただし、この方法では、多くのインターフェイス コントロールがある場合、ページ上の空白部分をクリックすることが困難になり、キーボードを非表示にすることが困難になることがよくあります。

そこで、ページのビューのタップジェスチャを監視し、ページがクリックされたときにキーボードをしまうことができるのではないかと考え、このメソッドを次のように実装します。

//注册点击事件
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:))))

@objc func handleTap(sender:UITapGestureRecognizer) {
        if sender.state == .ended {
            textField.resignFirstResponder()
        }
        sender.cancelsTouchesInView =false
    }

以上が一般的な実装方法ですが、RxSwift+RxCocoaを使って実装してみましょう

//首先需要导入RxSwift和RxCocoa
import RxSwift
import RxCocoa

fileprivate let disposeBag = DisposeBag()
    
override func viewDidLoad() {
    super.viewDidLoad()

    //添加一个点击手势
    let tapBackground = UITapGestureRecognizer()
    view.addGestureRecognizer(tapBackground)
        
    tapBackground.rx.event.subscribe(onNext: { [weak self] _ in
        self?.view.endEditing(true)
    }).disposed(by: disposeBag) 

}

CocoaPods を使用して特定の RxSwift および RxCocoa をインストールできます

platform :ios,’10.0’
use_frameworks!
target ‘项目名’ do
pod 'RxSwift',    '~> 4.0'
pod 'RxCocoa',    '~> 4.0'
pod 'IQKeyboardManagerSwift'
end

もちろん、サードパーティのキーボード管理ツールであるIQKeyboardManagerSwiftを使用して、キーボードの終了を処理することもできます。

おすすめ

転載: blog.csdn.net/qq_37269542/article/details/89309465