Skip to content

Commit

Permalink
Swift 4 Fix (#19)
Browse files Browse the repository at this point in the history
* Update to Swift 4

* Add UIGestureRecognizerDelegate

* Bump pod version 🚀

* Update travis-ci
  • Loading branch information
kmcgill88 committed Oct 2, 2017
1 parent 9fdac4a commit 0e2b45a
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 25 deletions.
1 change: 1 addition & 0 deletions .swift-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4.0
7 changes: 6 additions & 1 deletion .swiftlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,9 @@ line_length: 200
cyclomatic_complexity: 5
file_length:
warning: 500
error: 1200
error: 1000
type_body_length:
- 300 # warning
- 400 # error
disabled_rules: # rule identifiers to exclude from running
- superfluous_disable_command
11 changes: 6 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
osx_image: xcode8.3
osx_image: xcode9
language: swift
# cache: cocoapods
# podfile: Example/Podfile
Expand All @@ -8,17 +8,18 @@ env:
- LC_CTYPE=en_US.UTF-8
- LANG=en_US.UTF-8
matrix:
- DESTINATION="OS=10.3.1,name=iPhone 7 Plus" SDK="iphonesimulator10.3" POD_LINT="YES" SWIFT_LINT="YES"
- DESTINATION="OS=9.0,name=iPhone 6" SDK="iphonesimulator10.3" POD_LINT="NO" SWIFT_LINT="NO"
- DESTINATION="OS=8.1,name=iPhone 4S" SDK="iphonesimulator10.3" POD_LINT="NO" SWIFT_LINT="NO"
- DESTINATION="OS=11.0,name=iPhone 8" SDK="iphonesimulator11.0" POD_LINT="YES" SWIFT_LINT="YES"
- DESTINATION="OS=10.3.1,name=iPhone 7 Plus" SDK="iphonesimulator11.0" POD_LINT="NO" SWIFT_LINT="NO"
- DESTINATION="OS=9.3,name=iPhone 6" SDK="iphonesimulator11.0" POD_LINT="NO" SWIFT_LINT="NO"
- DESTINATION="OS=8.4,name=iPhone 4S" SDK="iphonesimulator11.0" POD_LINT="NO" SWIFT_LINT="NO"

before_install:
- brew install swiftlint
- pod install --project-directory=Example
# - gem install cocoapods # Since Travis is not always on latest version
# - xcodebuild -showsdks
# - instruments -s devices
# - xcodebuild -version
# - xcodebuild -showsdks
# - xcodebuild -list

script:
Expand Down
30 changes: 23 additions & 7 deletions Example/McPicker.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -214,16 +214,16 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 0830;
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = CocoaPods;
TargetAttributes = {
607FACCF1AFB9204008FA782 = {
CreatedOnToolsVersion = 6.3.1;
LastSwiftMigration = 0820;
LastSwiftMigration = 0900;
};
607FACE41AFB9204008FA782 = {
CreatedOnToolsVersion = 6.3.1;
LastSwiftMigration = 0820;
LastSwiftMigration = 0900;
TestTargetID = 607FACCF1AFB9204008FA782;
};
};
Expand Down Expand Up @@ -430,14 +430,20 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
Expand Down Expand Up @@ -477,14 +483,20 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
Expand Down Expand Up @@ -522,7 +534,8 @@
MODULE_NAME = ExampleApp;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
Expand All @@ -540,7 +553,8 @@
MODULE_NAME = ExampleApp;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
Expand All @@ -558,7 +572,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
Expand All @@ -571,7 +586,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
};
name = Release;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0830"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down Expand Up @@ -40,6 +40,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
Expand Down Expand Up @@ -69,6 +70,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0830"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand All @@ -10,6 +10,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
Expand All @@ -30,6 +31,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
Expand Down
7 changes: 4 additions & 3 deletions Example/Tests/McPickerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class McPickerTests: XCTestCase {
XCTAssertEqual(data[0][1], mcPicker.pickerData[0][1])

XCTAssertEqual(1, mcPicker.gestureRecognizers?.count)
XCTAssertEqual(mcPicker, mcPicker.gestureRecognizers!.first!.delegate! as! TestMcPicker)
XCTAssertEqual(5, mcPicker.toolbar.items?.count)

let fixedSpace = mcPicker.toolbar.items?[0] as! McPickerBarButtonItem
Expand Down Expand Up @@ -168,8 +169,8 @@ class McPickerTests: XCTestCase {

// Then
//
XCTAssertEqual(expectedFont, cancelBarButton.titleTextAttributes(for: .normal)?[NSFontAttributeName] as! UIFont)
XCTAssertEqual(expectedFont, doneBarButton.titleTextAttributes(for: .normal)?[NSFontAttributeName] as! UIFont)
XCTAssertEqual(expectedFont, cancelBarButton.titleTextAttributes(for: .normal)?[NSAttributedStringKey.font.rawValue] as! UIFont)
XCTAssertEqual(expectedFont, doneBarButton.titleTextAttributes(for: .normal)?[NSAttributedStringKey.font.rawValue] as! UIFont)
}

func testSetPickerBackgroundColor() {
Expand Down Expand Up @@ -205,7 +206,7 @@ class McPickerTests: XCTestCase {

// When
//
mcPicker.show(cancelHandler: {}) { (_: [Int : String]) in }
mcPicker.show(cancelHandler: {}, doneHandler: { (_: [Int : String]) in })
XCTAssertFalse(mcPicker.isPopoverMode)
XCTAssertEqual(McPicker.AnimationDirection.in, mcPicker.direction)
mcPicker.dismissViews()
Expand Down
2 changes: 1 addition & 1 deletion McPicker.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'McPicker'
s.version = '0.5.0'
s.version = '0.5.1'
s.summary = 'McPicker is a UIPickerView drop-in solution with animations that is rotation ready.'

s.description = <<-DESC
Expand Down
22 changes: 17 additions & 5 deletions McPicker/Classes/McPicker.swift
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ open class McPicker: UIView {
public var toolbarItemsFont: UIFont? {
didSet {
applyToolbarButtonItemsSettings { (barButtonItem) in
barButtonItem.setTitleTextAttributes([NSFontAttributeName: toolbarItemsFont!], for: .normal)
barButtonItem.setTitleTextAttributes([.font: toolbarItemsFont!], for: .normal)
}
}
}
Expand Down Expand Up @@ -112,7 +112,7 @@ open class McPicker: UIView {
}

fileprivate var doneHandler:(_ selections: [Int:String]) -> Void = {_ in }
fileprivate var cancelHandler:() -> Void = {_ in }
fileprivate var cancelHandler:() -> Void = { }

private var appWindow: UIWindow {
guard let window = UIApplication.shared.keyWindow else {
Expand Down Expand Up @@ -247,13 +247,13 @@ open class McPicker: UIView {
super.willMove(toWindow: newWindow)

if newWindow != nil {
NotificationCenter.default.addObserver(self, selector: #selector(sizeViews), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(McPicker.sizeViews), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
} else {
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
}
}

internal func sizeViews() {
@objc internal func sizeViews() {
let size = isPopoverMode ? popOverContentSize : self.appWindow.bounds.size
self.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)

Expand Down Expand Up @@ -327,7 +327,9 @@ open class McPicker: UIView {
}

private func setup() {
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(cancel)))
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(McPicker.cancel))
tapGestureRecognizer.delegate = self
self.addGestureRecognizer(tapGestureRecognizer)

let fixedSpace = McPickerBarButtonItem.fixedSpace(width: appWindow.bounds.size.width * Constant.barButtonFixedSpacePadding)
setToolbarItems(items: [fixedSpace, McPickerBarButtonItem.cancel(mcPicker: self),
Expand Down Expand Up @@ -416,3 +418,13 @@ extension McPicker : UIPopoverPresentationControllerDelegate {
return .none
}
}

extension McPicker : UIGestureRecognizerDelegate {

public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if let goodView = touch.view {
return goodView == self
}
return false
}
}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ McPicker's `doneHandler` passes back `selections: [Int : String]` as an argument
## Requirements
- iOS 8+
- Swift 3+
- Xcode 8
- Xcode 8+

## Installation

Expand Down

0 comments on commit 0e2b45a

Please sign in to comment.