我添加了textfield两个控件,即使使用RxSwift,我也希望在一个方法中实现不同的东西.

textField.rx.controlEvent([.editingDidBegin, .editingDidEnd])
        .asObservable()
        .subscribe(onNext: { event in
            // setFocusing(withType: ControlEvent)
        })

private func setFocusing(type: ControlEvent) {
    if type == .editingDidBegin { 
       //....
    } else if type ==.editingDidEnd {
       //....
    }
}

我想用一个方法执行所有操作,但如何获得controlEvent类型?有可能吗?

推荐答案

试试这个:

Observable.merge(
  [.editingDidBegin, .editingDidEnd]
    .map { event in
      textField.rx.controlEvent(event).map { event }
    }
)
.subscribe(onNext: setFocusing)

func setFocusing(type: UIControl.Event) {
  if type == .editingDidBegin {
    //....
  } else if type == .editingDidEnd {
    //....
  }
}

Swift相关问答推荐

如何在一个角色隔离类上编写自定义==实现?

动画过程中的SwiftUI重绘视图

字符串目录不适用于SWIFT包

如何在SWIFT中轻松格式化公制和英制使用的UnitVolume

在Xcode SWIFT中运行用Ionic编写的函数

SwiftUI 组合问题:通过 AppEventsManager 在 ViewModel 之间共享数据

如何在应用程序区域永久更改 NSCursor?

使用异步收集发布者值

在PrimitiveSequence上引用实例方法xxx需要类型A和any B等效

ConfirmationDialog取消swiftui中的错误

SwiftUI:按钮的圆形边缘的边框尺寸加倍

供应和普通数组中具有空值的 map 函数的行为不一致?

如何更改任务栏 colored颜色 和 sf 符号 colored颜色 ?

单击按钮后的计时器发布者初始化计时器

Swift - 获取本地日期和时间

如何在 Swift 中将 UILabel 居中?

使用 JSONEncoder 对类型为 Codable 的变量进行编码

如何将多个枚举值作为函数参数传递

滑动侧边栏菜单 IOS 8 Swift

NSLocationWhenInUseUsageDescription 警告,但我已经添加了