From 268570b3bb1265ceedf586996f3f9f2b4191bd6a Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 18 Aug 2022 15:20:56 -0500 Subject: [PATCH] added publishers Signed-off-by: Matt Bruce --- VDS.xcodeproj/project.pbxproj | 8 ++++++++ VDS/Publishers/UIButton+Publisher.swift | 17 +++++++++++++++++ VDS/Publishers/UITextField+Publisher.swift | 18 ++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 VDS/Publishers/UIButton+Publisher.swift create mode 100644 VDS/Publishers/UITextField+Publisher.swift diff --git a/VDS.xcodeproj/project.pbxproj b/VDS.xcodeproj/project.pbxproj index c1336d20..8cbd6c30 100644 --- a/VDS.xcodeproj/project.pbxproj +++ b/VDS.xcodeproj/project.pbxproj @@ -37,6 +37,8 @@ EA3362452892F9130071C351 /* Labelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3362442892F9130071C351 /* Labelable.swift */; }; EA33624728931B050071C351 /* Initable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA33624628931B050071C351 /* Initable.swift */; }; EA3C3B4C2894823E000CA526 /* AnyProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3C3B4B2894823E000CA526 /* AnyProxy.swift */; }; + EA89200228AECF2A006B9984 /* UIButton+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200128AECF2A006B9984 /* UIButton+Publisher.swift */; }; + EA89200428AECF4B006B9984 /* UITextField+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */; }; EAB1D29428A3ECF700DAE764 /* SelectorGroupBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F13028A17FAB00B287F5 /* SelectorGroupBase.swift */; }; EAB1D29A28A5611D00DAE764 /* SelectorGroupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */; }; EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */; }; @@ -120,6 +122,8 @@ EA3362442892F9130071C351 /* Labelable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Labelable.swift; sourceTree = ""; }; EA33624628931B050071C351 /* Initable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Initable.swift; sourceTree = ""; }; EA3C3B4B2894823E000CA526 /* AnyProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyProxy.swift; sourceTree = ""; }; + EA89200128AECF2A006B9984 /* UIButton+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+Publisher.swift"; sourceTree = ""; }; + EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Publisher.swift"; sourceTree = ""; }; EAB1D29928A5611D00DAE764 /* SelectorGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectorGroupModel.swift; sourceTree = ""; }; EAB1D29B28A5618900DAE764 /* RadioButtonGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonGroup.swift; sourceTree = ""; }; EAB1D29D28A5619500DAE764 /* RadioButtonGroupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonGroupModel.swift; sourceTree = ""; }; @@ -376,7 +380,9 @@ children = ( EAB1D2E328AE842000DAE764 /* Publisher+Bind.swift */, EAB1D2C628A6E76300DAE764 /* ModelHandlerPublisher.swift */, + EA89200128AECF2A006B9984 /* UIButton+Publisher.swift */, EAB1D2E928AE84AA00DAE764 /* UIControlPublisher.swift */, + EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */, ); path = Publishers; sourceTree = ""; @@ -541,6 +547,7 @@ files = ( EAF7F0B5289C126F00B287F5 /* UILabel.swift in Sources */, EAF7F0A6289B0CE000B287F5 /* Resetable.swift in Sources */, + EA89200428AECF4B006B9984 /* UITextField+Publisher.swift in Sources */, EAB1D29428A3ECF700DAE764 /* SelectorGroupBase.swift in Sources */, EA3361C328902D960071C351 /* Toggle.swift in Sources */, EAF7F12C28A1617600B287F5 /* SelectorBase.swift in Sources */, @@ -577,6 +584,7 @@ EAF7F0BB289D80ED00B287F5 /* Modelable.swift in Sources */, EAF7F09E289AAEC000B287F5 /* Constants.swift in Sources */, EA3361B3288B265D0071C351 /* Changable.swift in Sources */, + EA89200228AECF2A006B9984 /* UIButton+Publisher.swift in Sources */, EAF7F0AB289B13FD00B287F5 /* LabelAttributeFont.swift in Sources */, EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */, EA336171288B19200071C351 /* VDS.docc in Sources */, diff --git a/VDS/Publishers/UIButton+Publisher.swift b/VDS/Publishers/UIButton+Publisher.swift new file mode 100644 index 00000000..6d669dfd --- /dev/null +++ b/VDS/Publishers/UIButton+Publisher.swift @@ -0,0 +1,17 @@ +// +// Button+Publisher.swift +// VDS +// +// Created by Matt Bruce on 8/18/22. +// + +import Foundation +import UIKit +import Combine + +extension UIButton { + public var tapPublisher: AnyPublisher { + publisher(for: .touchUpInside) + .eraseToAnyPublisher() + } +} diff --git a/VDS/Publishers/UITextField+Publisher.swift b/VDS/Publishers/UITextField+Publisher.swift new file mode 100644 index 00000000..2e2a4ebc --- /dev/null +++ b/VDS/Publishers/UITextField+Publisher.swift @@ -0,0 +1,18 @@ +// +// UITextField+Publisher.swift +// VDS +// +// Created by Matt Bruce on 8/18/22. +// + +import Foundation +import UIKit +import Combine + +extension UITextField { + public var textPublisher: AnyPublisher { + publisher(for: .editingChanged) + .map { _ in self.text ?? "" } + .eraseToAnyPublisher() + } +}