-
[UIKit, Combine] UITextField, UITextView text 입력 받기Swift/UIKit 2023. 9. 20. 00:22
class SomeViewController: UIViewController { private let someTextView = UITextView() private let someTextField = UITextField() private let viewModel = ViewModel() override func viewDidLoad() { super.viewDidLoad() bind() } private func bind() { someTextView.textPublisher .receive(on: RunLoop.main) .assign(to: &viewModel.$textViewInput) someTextField.textPublisher .receive(on: RunLoop.main) .assign(to: &viewModel.$textFieldInput) } } class ViewModel { @Published var textViewInput = "" @Published var textFieldInput = "" }
import Combine extension UITextField { var textPublisher: AnyPublisher<String, Never> { NotificationCenter.default.publisher( for: UITextField.textDidChangeNotification, object: self ) .compactMap { $0.object as? UITextField } .map { $0.text ?? "" } .eraseToAnyPublisher() } } extension UITextView { var textPublisher: AnyPublisher<String, Never> { NotificationCenter.default.publisher( for: UITextView.textDidChangeNotification, object: self ) .compactMap{ $0.object as? UITextView} .map{ $0.text ?? "" } .eraseToAnyPublisher() } }
'Swift > UIKit' 카테고리의 다른 글
[UIKit] BottomButton Keyboard + Combine + SnapKit (0) 2023.11.05 [UIKit] 편리하게 PDF 불러오기 - PDFKit (0) 2023.05.03 [UIKit] PDFKit (0) 2023.05.02 SwiftUIWrapperVC : UIKit 에서도 SwiftUI 를 자유롭게 사용하기 위한 시도 (0) 2023.04.23 [UIKit] MVVM 에서 KVO 사용하기 (0) 2022.12.29