UIPastboard 的 RxSwift 擴充


實作

因為 RxCocoa 裡面不存在這個擴充,就自己寫:

import UIKit
import RxSwift
import RxCocoa

extension Reactive where Base: UIPasteboard {
    var string: Binder<String?> {
        return Binder(base) { pasteboard, string in
            pasteboard.string = string
        }
    }
}

使用

假設我們有一個 view model 的類別, 裡面有宣告一個這樣子的 property:

let copyContent: Driver<String?>

使用的時候就像這樣即可:

// viewModel 是上面說的該 view model 的實例
// disposeBag 即 DisposeBag()
viewModel.copyContent
    .drive(UIPasteboard.general.rx.string)
    .disposed(by: disposeBag)