The Swift Package Index logo.Swift Package Index

追踪 Swift 6 严格并发检查的数据竞争安全性采用情况。有多少 package 已准备好支持 Swift 6?

当使用 Xcode 项目时

当使用 Swift Package Manager 清单时

选择一个 package 版本

0.4.1

main


用于 UIKit 的 Combine 发布者桥接




CombineCocoa



Build Status
CombineCocoa supports CocoaPods CombineCocoa supports Swift Package Manager (SPM) CombineCocoa supports Carthage

CombineCocoa 旨在为常见的 UIKit 控件提供 Publisher,以便您可以将用户交互作为 Combine 事件流来使用,并将它们组合成有意义的、逻辑的 Publisher 链。

注意: 这仍然是它的初始版本,还有很多需要改进的地方。 我很乐意接受 PR、想法、意见或改进建议。 谢谢! :)

基本示例

查看 Example 文件夹中的示例。 在 Xcode 11 中打开项目,Swift Package Manager 应该会自动解析所需的依赖项。

用法

长话短说

import Combine
import CombineCocoa

textField.textPublisher // AnyPublisher<String, Never>
segmented.selectedSegmentIndexPublisher // AnyPublisher<Int, Never>
slider.valuePublisher // AnyPublisher<Float, Never>
button.tapPublisher // AnyPublisher<Void, Never>
barButtonItem.tapPublisher // AnyPublisher<Void, Never>
switch.isOnPublisher // AnyPublisher<Bool, Never>
stepper.valuePublisher // AnyPublisher<Double, Never>
datePicker.datePublisher // AnyPublisher<Date, Never>
refreshControl.isRefreshingPublisher // AnyPublisher<Bool, Never>
pageControl.currentPagePublisher // AnyPublisher<Int, Never>
tapGesture.tapPublisher // AnyPublisher<UITapGestureRecognizer, Never>
pinchGesture.pinchPublisher // AnyPublisher<UIPinchGestureRecognizer, Never>
rotationGesture.rotationPublisher // AnyPublisher<UIRotationGestureRecognizer, Never>
swipeGesture.swipePublisher // AnyPublisher<UISwipeGestureRecognizer, Never>
panGesture.panPublisher // AnyPublisher<UIPanGestureRecognizer, Never>
screenEdgePanGesture.screenEdgePanPublisher // AnyPublisher<UIScreenEdgePanGestureRecognizer, Never>
longPressGesture.longPressPublisher // AnyPublisher<UILongPressGestureRecognizer, Never>
scrollView.contentOffsetPublisher // AnyPublisher<CGPoint, Never>
scrollView.reachedBottomPublisher(offset:) // AnyPublisher<Void, Never>

安装

CocoaPods

将以下行添加到您的 Podfile

pod 'CombineCocoa'

Swift Package Manager

将以下依赖项添加到您的 Package.swift 文件中

.package(url: "https://github.com/CombineCommunity/CombineCocoa.git", from: "0.2.1")

Carthage

将以下内容添加到您的 Cartfile

github "CombineCommunity/CombineCocoa"

未来的想法

  • 支持非 UIControl.Event-based Publisher(例如,委托)。
  • ... 您的想法? :)

致谢

许可

当然是 MIT ;-) 请参阅 LICENSE 文件。

Apple 徽标和 Combine 框架是 Apple Inc. 的财产。