123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- //
- // UITextField+Rx.swift
- // RxCocoa
- //
- // Created by Krunoslav Zaher on 2/21/15.
- // Copyright © 2015 Krunoslav Zaher. All rights reserved.
- //
- #if os(iOS) || os(tvOS)
- import RxSwift
- import UIKit
- extension Reactive where Base: UITextField {
- /// Reactive wrapper for `text` property.
- public var text: ControlProperty<String?> {
- return value
- }
-
- /// Reactive wrapper for `text` property.
- public var value: ControlProperty<String?> {
- return base.rx.controlPropertyWithDefaultEvents(
- getter: { textField in
- textField.text
- },
- setter: { textField, value in
- // This check is important because setting text value always clears control state
- // including marked text selection which is imporant for proper input
- // when IME input method is used.
- if textField.text != value {
- textField.text = value
- }
- }
- )
- }
-
- /// Bindable sink for `attributedText` property.
- public var attributedText: ControlProperty<NSAttributedString?> {
- return base.rx.controlPropertyWithDefaultEvents(
- getter: { textField in
- textField.attributedText
- },
- setter: { textField, value in
- // This check is important because setting text value always clears control state
- // including marked text selection which is imporant for proper input
- // when IME input method is used.
- if textField.attributedText != value {
- textField.attributedText = value
- }
- }
- )
- }
- /// Bindable sink for `isSecureTextEntry` property.
- public var isSecureTextEntry: Binder<Bool> {
- return Binder(self.base) { textField, isSecureTextEntry in
- textField.isSecureTextEntry = isSecureTextEntry
- }
- }
-
- }
- #endif
|