mirror of
https://github.com/zhigang1992/ParkedTextField.git
synced 2026-04-26 05:15:22 +08:00
Swift 4 compatibility
This commit is contained in:
1
.swift-version
Normal file
1
.swift-version
Normal file
@@ -0,0 +1 @@
|
||||
4.0
|
||||
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "ParkedTextField"
|
||||
s.version = "0.3.1"
|
||||
s.version = "0.4.0"
|
||||
s.summary = "A UITextField subclass with an appended constant text"
|
||||
s.homepage = "https://github.com/gmertk/ParkedTextField"
|
||||
s.screenshots = "https://dl.dropboxusercontent.com/u/4397140/pod-screenshots/ParkedTextField.gif"
|
||||
|
||||
@@ -229,18 +229,20 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0720;
|
||||
LastUpgradeCheck = 0820;
|
||||
LastUpgradeCheck = 0900;
|
||||
ORGANIZATIONNAME = "Gunay Mert Karadogan";
|
||||
TargetAttributes = {
|
||||
A5EACD0E1B624754006E8A67 = {
|
||||
CreatedOnToolsVersion = 6.4;
|
||||
LastSwiftMigration = 0820;
|
||||
LastSwiftMigration = 0900;
|
||||
};
|
||||
A5EACD301B6247CA006E8A67 = {
|
||||
CreatedOnToolsVersion = 6.4;
|
||||
LastSwiftMigration = 0900;
|
||||
};
|
||||
A5EACD441B6247CA006E8A67 = {
|
||||
CreatedOnToolsVersion = 6.4;
|
||||
LastSwiftMigration = 0900;
|
||||
TestTargetID = A5EACD301B6247CA006E8A67;
|
||||
};
|
||||
};
|
||||
@@ -361,14 +363,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;
|
||||
@@ -412,14 +420,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;
|
||||
@@ -463,7 +477,7 @@
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -482,7 +496,7 @@
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
@@ -499,7 +513,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -512,7 +526,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
@@ -532,7 +546,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Debug;
|
||||
@@ -549,7 +563,7 @@
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.gunaymert.$(PRODUCT_NAME:rfc1034identifier)";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
SWIFT_VERSION = 4.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
|
||||
};
|
||||
name = Release;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
LastUpgradeVersion = "0900"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -40,6 +40,7 @@
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
@@ -69,6 +70,7 @@
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
|
||||
@@ -46,7 +46,7 @@ open class ParkedTextField: UITextField {
|
||||
return ""
|
||||
}
|
||||
if text.hasSuffix(parkedText) {
|
||||
return text[text.startIndex..<text.characters.index(text.endIndex, offsetBy: -parkedText.characters.count)]
|
||||
return String(text[text.startIndex..<text.characters.index(text.endIndex, offsetBy: -parkedText.characters.count)])
|
||||
} else {
|
||||
return text
|
||||
}
|
||||
@@ -66,7 +66,7 @@ open class ParkedTextField: UITextField {
|
||||
|
||||
|
||||
/// Constant part of the text. Defaults to the text field's font.
|
||||
open var parkedTextFont: UIFont! {
|
||||
@objc open var parkedTextFont: UIFont! {
|
||||
didSet {
|
||||
parkedText += ""
|
||||
}
|
||||
@@ -80,10 +80,10 @@ open class ParkedTextField: UITextField {
|
||||
}
|
||||
|
||||
/// Attributes wrapper for font and color of parkedText
|
||||
var parkedTextAttributes: [String: NSObject] {
|
||||
var parkedTextAttributes: [NSAttributedStringKey: NSObject] {
|
||||
return [
|
||||
NSFontAttributeName: parkedTextFont,
|
||||
NSForegroundColorAttributeName: parkedTextColor ?? textColor!
|
||||
NSAttributedStringKey.font: parkedTextFont,
|
||||
NSAttributedStringKey.foregroundColor: parkedTextColor ?? textColor!
|
||||
]
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ open class ParkedTextField: UITextField {
|
||||
|
||||
// MARK: EditingChanged handler
|
||||
|
||||
func textChanged(_ sender: UITextField) {
|
||||
@objc func textChanged(_ sender: UITextField) {
|
||||
switch typingState {
|
||||
case .start where text!.characters.count > 0:
|
||||
text = typedText + parkedText
|
||||
@@ -208,8 +208,10 @@ open class ParkedTextField: UITextField {
|
||||
// https://stackoverflow.com/a/30404532/805882
|
||||
fileprivate extension String {
|
||||
func nsRange(from range: Range<String.Index>) -> NSRange {
|
||||
let from = range.lowerBound.samePosition(in: utf16)
|
||||
let to = range.upperBound.samePosition(in: utf16)
|
||||
guard let from = range.lowerBound.samePosition(in: utf16),
|
||||
let to = range.upperBound.samePosition(in: utf16) else {
|
||||
return NSRange(location: NSNotFound, length: 0)
|
||||
}
|
||||
return NSRange(location: utf16.distance(from: utf16.startIndex, to: from),
|
||||
length: utf16.distance(from: from, to: to))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user