Skip to content
This repository has been archived by the owner on Jan 24, 2023. It is now read-only.

Commit

Permalink
Merge pull request #19 from UrbanCompass/control-stuff
Browse files Browse the repository at this point in the history
Working uicontrol and uibutton tap
  • Loading branch information
russellbstephens authored Dec 12, 2016
2 parents 10e37c5 + fffe90f commit e44aedc
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 116 deletions.
24 changes: 0 additions & 24 deletions Snail.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,8 @@
CBE54E631DFB39510008DD64 /* Variable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E5F1DFB39510008DD64 /* Variable.swift */; };
CBE54E651DFB395A0008DD64 /* ObservableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E641DFB395A0008DD64 /* ObservableTests.swift */; };
CBE54E671DFB4F3F0008DD64 /* VariableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E661DFB4F3F0008DD64 /* VariableTests.swift */; };
CBE54E691DFB65D00008DD64 /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E681DFB65D00008DD64 /* ControlEvent.swift */; };
CBE54E6D1DFB6A910008DD64 /* UIControlExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E6C1DFB6A910008DD64 /* UIControlExtensions.swift */; };
CBE54E6F1DFB797F0008DD64 /* UIButtonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E6E1DFB797F0008DD64 /* UIButtonExtensions.swift */; };
CBE54E711DFD9A060008DD64 /* ControlEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E701DFD9A060008DD64 /* ControlEventTests.swift */; };
CBE54E741DFD9B120008DD64 /* UIControlExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E731DFD9B120008DD64 /* UIControlExtensionsTests.swift */; };
CBE54E761DFD9BDB0008DD64 /* UIButtonExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBE54E751DFD9BDB0008DD64 /* UIButtonExtensionsTests.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -57,12 +53,8 @@
CBE54E5F1DFB39510008DD64 /* Variable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Variable.swift; sourceTree = "<group>"; };
CBE54E641DFB395A0008DD64 /* ObservableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableTests.swift; sourceTree = "<group>"; };
CBE54E661DFB4F3F0008DD64 /* VariableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VariableTests.swift; sourceTree = "<group>"; };
CBE54E681DFB65D00008DD64 /* ControlEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEvent.swift; sourceTree = "<group>"; };
CBE54E6C1DFB6A910008DD64 /* UIControlExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIControlExtensions.swift; sourceTree = "<group>"; };
CBE54E6E1DFB797F0008DD64 /* UIButtonExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIButtonExtensions.swift; sourceTree = "<group>"; };
CBE54E701DFD9A060008DD64 /* ControlEventTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEventTests.swift; sourceTree = "<group>"; };
CBE54E731DFD9B120008DD64 /* UIControlExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIControlExtensionsTests.swift; sourceTree = "<group>"; };
CBE54E751DFD9BDB0008DD64 /* UIButtonExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIButtonExtensionsTests.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -107,7 +99,6 @@
children = (
CBE54E441DFB36DF0008DD64 /* Snail.h */,
CBE54E451DFB36DF0008DD64 /* Info.plist */,
CBE54E681DFB65D00008DD64 /* ControlEvent.swift */,
CBE54E5B1DFB39510008DD64 /* Event.swift */,
24FABD551DFEF670005CF84E /* Fail.swift */,
CB2936761DFE151B00792E6B /* Just.swift */,
Expand All @@ -124,13 +115,11 @@
isa = PBXGroup;
children = (
CBE54E511DFB36DF0008DD64 /* Info.plist */,
CBE54E701DFD9A060008DD64 /* ControlEventTests.swift */,
24FABD571DFEF7EC005CF84E /* FailTests.swift */,
CB2936781DFEF77500792E6B /* JustTests.swift */,
CBE54E641DFB395A0008DD64 /* ObservableTests.swift */,
24FABD5B1DFF0BAF005CF84E /* ReplayTests.swift */,
CBE54E661DFB4F3F0008DD64 /* VariableTests.swift */,
CBE54E721DFD9B030008DD64 /* Extensions */,
);
path = SnailTests;
sourceTree = "<group>";
Expand All @@ -144,15 +133,6 @@
path = Extensions;
sourceTree = "<group>";
};
CBE54E721DFD9B030008DD64 /* Extensions */ = {
isa = PBXGroup;
children = (
CBE54E731DFD9B120008DD64 /* UIControlExtensionsTests.swift */,
CBE54E751DFD9BDB0008DD64 /* UIButtonExtensionsTests.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
Expand Down Expand Up @@ -264,7 +244,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CBE54E691DFB65D00008DD64 /* ControlEvent.swift in Sources */,
CBE54E621DFB39510008DD64 /* ObservableType.swift in Sources */,
24FABD561DFEF670005CF84E /* Fail.swift in Sources */,
CBE54E611DFB39510008DD64 /* Observable.swift in Sources */,
Expand All @@ -281,14 +260,11 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CBE54E711DFD9A060008DD64 /* ControlEventTests.swift in Sources */,
CB2936791DFEF77500792E6B /* JustTests.swift in Sources */,
CBE54E651DFB395A0008DD64 /* ObservableTests.swift in Sources */,
CBE54E761DFD9BDB0008DD64 /* UIButtonExtensionsTests.swift in Sources */,
24FABD5C1DFF0BAF005CF84E /* ReplayTests.swift in Sources */,
CBE54E671DFB4F3F0008DD64 /* VariableTests.swift in Sources */,
24FABD581DFEF7EC005CF84E /* FailTests.swift in Sources */,
CBE54E741DFD9B120008DD64 /* UIControlExtensionsTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
28 changes: 0 additions & 28 deletions Snail/ControlEvent.swift

This file was deleted.

2 changes: 1 addition & 1 deletion Snail/Extensions/UIButtonExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
public extension UIButton {
public var tap: Observable<Void> {
get {
return ControlEvent(control: self, controlEvents: .touchUpInside).asObservable()
return controlEvent(.touchUpInside)
}
}
}
15 changes: 13 additions & 2 deletions Snail/Extensions/UIControlExtensions.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
// Copyright © 2016 Compass. All rights reserved.

public extension UIControl {
public func controlEvent(_ controlEvents: UIControlEvents) -> ControlEvent {
return ControlEvent(control: self, controlEvents: controlEvents)
private static var observableKey = "ObservableKey"

public func controlEvent(_ controlEvents: UIControlEvents) -> Observable<Void> {
let observable = Observable<Void>()
objc_setAssociatedObject(self, &UIControl.observableKey, observable, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
addTarget(self, action: #selector(observableHandler(_:)), for: controlEvents)
return observable
}

func observableHandler(_ sender: UIControl) {
if let observable = objc_getAssociatedObject(self, &UIControl.observableKey) as? Observable<Void> {
observable.on(.next())
}
}
}
25 changes: 0 additions & 25 deletions SnailTests/ControlEventTests.swift

This file was deleted.

18 changes: 0 additions & 18 deletions SnailTests/Extensions/UIButtonExtensionsTests.swift

This file was deleted.

18 changes: 0 additions & 18 deletions SnailTests/Extensions/UIControlExtensionsTests.swift

This file was deleted.

0 comments on commit e44aedc

Please sign in to comment.