From ff45e3439673f340f20dc70c3c35e3b70a5ea738 Mon Sep 17 00:00:00 2001 From: Steven Zweier Date: Sat, 3 Aug 2013 18:34:57 -0400 Subject: [PATCH] Initial Project Commit --- .DS_Store | Bin 0 -> 6148 bytes README.md | 6 + .../project.pbxproj | 456 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../SZTextViewPlaceholder.xccheckout | 41 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 33614 bytes .../WorkspaceSettings.xcsettings | 10 + .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/SZTextViewPlaceHolder.xcscheme | 96 ++++ .../xcschemes/xcschememanagement.plist | 27 ++ SZTextViewPlaceholder/AppDelegate.h | 15 + SZTextViewPlaceholder/AppDelegate.m | 46 ++ .../Base.lproj/Main.storyboard | 42 ++ .../AppIcon.appiconset/Contents.json | 23 + .../LaunchImage.launchimage/Contents.json | 23 + .../SZTextViewPlaceholder-Info.plist | 40 ++ .../SZTextViewPlaceholder-Prefix.pch | 16 + SZTextViewPlaceholder/SZTextViewPlaceholder.h | 31 ++ SZTextViewPlaceholder/SZTextViewPlaceholder.m | 225 +++++++++ SZTextViewPlaceholder/ViewController.h | 13 + SZTextViewPlaceholder/ViewController.m | 46 ++ .../en.lproj/InfoPlist.strings | 2 + SZTextViewPlaceholder/main.m | 18 + .../SZTextViewPlaceHolderTests.m | 33 ++ .../SZTextViewPlaceholderTests-Info.plist | 22 + .../en.lproj/InfoPlist.strings | 2 + 26 files changed, 1245 insertions(+) create mode 100644 .DS_Store create mode 100644 SZTextViewPlaceholder.xcodeproj/project.pbxproj create mode 100644 SZTextViewPlaceholder.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcshareddata/SZTextViewPlaceholder.xccheckout create mode 100644 SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcuserdata/Steve.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcuserdata/Steve.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/SZTextViewPlaceHolder.xcscheme create mode 100644 SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 SZTextViewPlaceholder/AppDelegate.h create mode 100644 SZTextViewPlaceholder/AppDelegate.m create mode 100644 SZTextViewPlaceholder/Base.lproj/Main.storyboard create mode 100644 SZTextViewPlaceholder/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 SZTextViewPlaceholder/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 SZTextViewPlaceholder/SZTextViewPlaceholder-Info.plist create mode 100644 SZTextViewPlaceholder/SZTextViewPlaceholder-Prefix.pch create mode 100644 SZTextViewPlaceholder/SZTextViewPlaceholder.h create mode 100644 SZTextViewPlaceholder/SZTextViewPlaceholder.m create mode 100644 SZTextViewPlaceholder/ViewController.h create mode 100644 SZTextViewPlaceholder/ViewController.m create mode 100644 SZTextViewPlaceholder/en.lproj/InfoPlist.strings create mode 100644 SZTextViewPlaceholder/main.m create mode 100644 SZTextViewPlaceholderTests/SZTextViewPlaceHolderTests.m create mode 100644 SZTextViewPlaceholderTests/SZTextViewPlaceholderTests-Info.plist create mode 100644 SZTextViewPlaceholderTests/en.lproj/InfoPlist.strings diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c5ecad34830475c2cdf47081ab26e38e61d29694 GIT binary patch literal 6148 zcmeHK!AiqG5Pe&FsCenon+x8>;tzxp?}dm5Pf8-K(vTo6ddwI4FX9jQW@jiZ(NjfK zW?<&+PG&aQx3H4|5T@&D0*nESsDgt-nomTYi}qw-o*^-$HD0j7H6Cz}=U%isej@{N zb|)xsgDale_W8}Q#2rd{7ic)HIC{bvV@l3t)^gt9aXFt9WmC7hy|?rISFD>nuhy#) zcs;#%PwVdajdfFf^NQ_aYu90>n|JFBI0MeW-(Y|>TV!;k=++r<2AqKn19Cq^s$gc= zDW6Ad%NPLWS2K~ssE8mz?#nofVTxXiFq)N}-EK7zeDScekQ z+qr&B;Ru!AmtXh)yGcHC2AqL^#XuP5MLy-0thV+xC$%b^@ m*C}pNI7p?Ku~LeUsY&RMG9YG#ogzIH{}D(uxN!!4lz|UY=1_+K literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 69de732..bce853a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ SZTextViewPlaceholder ===================== + +Instantiated like any other UITextView the SZTextViewPlaceholder allows you to have a placeholder. + +Examples exist in the Xcode project. + +You can easily set placeholder text, color and font. \ No newline at end of file diff --git a/SZTextViewPlaceholder.xcodeproj/project.pbxproj b/SZTextViewPlaceholder.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ffe16d7 --- /dev/null +++ b/SZTextViewPlaceholder.xcodeproj/project.pbxproj @@ -0,0 +1,456 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + AA28DF0317ADBC2B00E45ABE /* SZTextViewPlaceHolderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = AA28DF0217ADBC2B00E45ABE /* SZTextViewPlaceHolderTests.m */; }; + AA7FC47217ADB2D70039C4F0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = AA7FC46517ADB2D70039C4F0 /* AppDelegate.m */; }; + AA7FC47317ADB2D70039C4F0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA7FC46617ADB2D70039C4F0 /* Main.storyboard */; }; + AA7FC47417ADB2D70039C4F0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = AA7FC46817ADB2D70039C4F0 /* InfoPlist.strings */; }; + AA7FC47517ADB2D70039C4F0 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AA7FC46A17ADB2D70039C4F0 /* Images.xcassets */; }; + AA7FC47617ADB2D70039C4F0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AA7FC46B17ADB2D70039C4F0 /* main.m */; }; + AA7FC47717ADB2D70039C4F0 /* SZTextViewPlaceholder-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = AA7FC46C17ADB2D70039C4F0 /* SZTextViewPlaceholder-Info.plist */; }; + AA7FC47817ADB2D70039C4F0 /* SZTextViewPlaceholder.m in Sources */ = {isa = PBXBuildFile; fileRef = AA7FC46F17ADB2D70039C4F0 /* SZTextViewPlaceholder.m */; }; + AA7FC47917ADB2D70039C4F0 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AA7FC47117ADB2D70039C4F0 /* ViewController.m */; }; + AA7FC47F17ADB2E30039C4F0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = AA7FC47B17ADB2E30039C4F0 /* InfoPlist.strings */; }; + AA7FC48017ADB2E30039C4F0 /* SZTextViewPlaceholderTests-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = AA7FC47D17ADB2E30039C4F0 /* SZTextViewPlaceholderTests-Info.plist */; }; + AAF7609317ACBC1000BA76D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAF7609217ACBC1000BA76D4 /* Foundation.framework */; }; + AAF7609517ACBC1000BA76D4 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAF7609417ACBC1000BA76D4 /* CoreGraphics.framework */; }; + AAF7609717ACBC1000BA76D4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAF7609617ACBC1000BA76D4 /* UIKit.framework */; }; + AAF760B217ACBC1000BA76D4 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAF760B117ACBC1000BA76D4 /* XCTest.framework */; }; + AAF760B317ACBC1000BA76D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAF7609217ACBC1000BA76D4 /* Foundation.framework */; }; + AAF760B417ACBC1000BA76D4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAF7609617ACBC1000BA76D4 /* UIKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + AAF760B517ACBC1000BA76D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AAF7608717ACBC1000BA76D4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AAF7608E17ACBC1000BA76D4; + remoteInfo = TextViewPlaceHolder; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + AA28DF0217ADBC2B00E45ABE /* SZTextViewPlaceHolderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SZTextViewPlaceHolderTests.m; sourceTree = ""; }; + AA7FC46417ADB2D70039C4F0 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + AA7FC46517ADB2D70039C4F0 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + AA7FC46717ADB2D70039C4F0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + AA7FC46917ADB2D70039C4F0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + AA7FC46A17ADB2D70039C4F0 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + AA7FC46B17ADB2D70039C4F0 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + AA7FC46C17ADB2D70039C4F0 /* SZTextViewPlaceholder-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "SZTextViewPlaceholder-Info.plist"; sourceTree = ""; }; + AA7FC46D17ADB2D70039C4F0 /* SZTextViewPlaceholder-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SZTextViewPlaceholder-Prefix.pch"; sourceTree = ""; }; + AA7FC46E17ADB2D70039C4F0 /* SZTextViewPlaceholder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SZTextViewPlaceholder.h; sourceTree = ""; }; + AA7FC46F17ADB2D70039C4F0 /* SZTextViewPlaceholder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SZTextViewPlaceholder.m; sourceTree = ""; }; + AA7FC47017ADB2D70039C4F0 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + AA7FC47117ADB2D70039C4F0 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + AA7FC47C17ADB2E30039C4F0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + AA7FC47D17ADB2E30039C4F0 /* SZTextViewPlaceholderTests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "SZTextViewPlaceholderTests-Info.plist"; sourceTree = ""; }; + AAF7608F17ACBC1000BA76D4 /* SZTextViewPlaceholder.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SZTextViewPlaceholder.app; sourceTree = BUILT_PRODUCTS_DIR; }; + AAF7609217ACBC1000BA76D4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + AAF7609417ACBC1000BA76D4 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + AAF7609617ACBC1000BA76D4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + AAF760B017ACBC1000BA76D4 /* SZTextViewPlaceholderTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SZTextViewPlaceholderTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + AAF760B117ACBC1000BA76D4 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + AAF7608C17ACBC1000BA76D4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AAF7609517ACBC1000BA76D4 /* CoreGraphics.framework in Frameworks */, + AAF7609717ACBC1000BA76D4 /* UIKit.framework in Frameworks */, + AAF7609317ACBC1000BA76D4 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AAF760AD17ACBC1000BA76D4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AAF760B217ACBC1000BA76D4 /* XCTest.framework in Frameworks */, + AAF760B417ACBC1000BA76D4 /* UIKit.framework in Frameworks */, + AAF760B317ACBC1000BA76D4 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + AA7FC46317ADB2D70039C4F0 /* SZTextViewPlaceholder */ = { + isa = PBXGroup; + children = ( + AA7FC46417ADB2D70039C4F0 /* AppDelegate.h */, + AA7FC46517ADB2D70039C4F0 /* AppDelegate.m */, + AA7FC46617ADB2D70039C4F0 /* Main.storyboard */, + AA7FC46817ADB2D70039C4F0 /* InfoPlist.strings */, + AA7FC46A17ADB2D70039C4F0 /* Images.xcassets */, + AA7FC46B17ADB2D70039C4F0 /* main.m */, + AA7FC46C17ADB2D70039C4F0 /* SZTextViewPlaceholder-Info.plist */, + AA7FC46D17ADB2D70039C4F0 /* SZTextViewPlaceholder-Prefix.pch */, + AA7FC46E17ADB2D70039C4F0 /* SZTextViewPlaceholder.h */, + AA7FC46F17ADB2D70039C4F0 /* SZTextViewPlaceholder.m */, + AA7FC47017ADB2D70039C4F0 /* ViewController.h */, + AA7FC47117ADB2D70039C4F0 /* ViewController.m */, + ); + path = SZTextViewPlaceholder; + sourceTree = ""; + }; + AA7FC47A17ADB2E30039C4F0 /* SZTextViewPlaceholderTests */ = { + isa = PBXGroup; + children = ( + AA7FC47B17ADB2E30039C4F0 /* InfoPlist.strings */, + AA7FC47D17ADB2E30039C4F0 /* SZTextViewPlaceholderTests-Info.plist */, + AA28DF0217ADBC2B00E45ABE /* SZTextViewPlaceHolderTests.m */, + ); + path = SZTextViewPlaceholderTests; + sourceTree = ""; + }; + AAF7608617ACBC1000BA76D4 = { + isa = PBXGroup; + children = ( + AA7FC46317ADB2D70039C4F0 /* SZTextViewPlaceholder */, + AA7FC47A17ADB2E30039C4F0 /* SZTextViewPlaceholderTests */, + AAF7609117ACBC1000BA76D4 /* Frameworks */, + AAF7609017ACBC1000BA76D4 /* Products */, + ); + sourceTree = ""; + }; + AAF7609017ACBC1000BA76D4 /* Products */ = { + isa = PBXGroup; + children = ( + AAF7608F17ACBC1000BA76D4 /* SZTextViewPlaceholder.app */, + AAF760B017ACBC1000BA76D4 /* SZTextViewPlaceholderTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + AAF7609117ACBC1000BA76D4 /* Frameworks */ = { + isa = PBXGroup; + children = ( + AAF7609217ACBC1000BA76D4 /* Foundation.framework */, + AAF7609417ACBC1000BA76D4 /* CoreGraphics.framework */, + AAF7609617ACBC1000BA76D4 /* UIKit.framework */, + AAF760B117ACBC1000BA76D4 /* XCTest.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + AAF7608E17ACBC1000BA76D4 /* SZTextViewPlaceholder */ = { + isa = PBXNativeTarget; + buildConfigurationList = AAF760C117ACBC1100BA76D4 /* Build configuration list for PBXNativeTarget "SZTextViewPlaceholder" */; + buildPhases = ( + AAF7608B17ACBC1000BA76D4 /* Sources */, + AAF7608C17ACBC1000BA76D4 /* Frameworks */, + AAF7608D17ACBC1000BA76D4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SZTextViewPlaceholder; + productName = TextViewPlaceHolder; + productReference = AAF7608F17ACBC1000BA76D4 /* SZTextViewPlaceholder.app */; + productType = "com.apple.product-type.application"; + }; + AAF760AF17ACBC1000BA76D4 /* SZTextViewPlaceholderTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = AAF760C417ACBC1100BA76D4 /* Build configuration list for PBXNativeTarget "SZTextViewPlaceholderTests" */; + buildPhases = ( + AAF760AC17ACBC1000BA76D4 /* Sources */, + AAF760AD17ACBC1000BA76D4 /* Frameworks */, + AAF760AE17ACBC1000BA76D4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + AAF760B617ACBC1000BA76D4 /* PBXTargetDependency */, + ); + name = SZTextViewPlaceholderTests; + productName = TextViewPlaceHolderTests; + productReference = AAF760B017ACBC1000BA76D4 /* SZTextViewPlaceholderTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + AAF7608717ACBC1000BA76D4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0500; + ORGANIZATIONNAME = "Steven Zweier"; + }; + buildConfigurationList = AAF7608A17ACBC1000BA76D4 /* Build configuration list for PBXProject "SZTextViewPlaceholder" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = AAF7608617ACBC1000BA76D4; + productRefGroup = AAF7609017ACBC1000BA76D4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + AAF7608E17ACBC1000BA76D4 /* SZTextViewPlaceholder */, + AAF760AF17ACBC1000BA76D4 /* SZTextViewPlaceholderTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + AAF7608D17ACBC1000BA76D4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AA7FC47517ADB2D70039C4F0 /* Images.xcassets in Resources */, + AA7FC48017ADB2E30039C4F0 /* SZTextViewPlaceholderTests-Info.plist in Resources */, + AA7FC47317ADB2D70039C4F0 /* Main.storyboard in Resources */, + AA7FC47717ADB2D70039C4F0 /* SZTextViewPlaceholder-Info.plist in Resources */, + AA7FC47417ADB2D70039C4F0 /* InfoPlist.strings in Resources */, + AA7FC47F17ADB2E30039C4F0 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AAF760AE17ACBC1000BA76D4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + AAF7608B17ACBC1000BA76D4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AA7FC47617ADB2D70039C4F0 /* main.m in Sources */, + AA7FC47817ADB2D70039C4F0 /* SZTextViewPlaceholder.m in Sources */, + AA7FC47917ADB2D70039C4F0 /* ViewController.m in Sources */, + AA7FC47217ADB2D70039C4F0 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AAF760AC17ACBC1000BA76D4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AA28DF0317ADBC2B00E45ABE /* SZTextViewPlaceHolderTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + AAF760B617ACBC1000BA76D4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = AAF7608E17ACBC1000BA76D4 /* SZTextViewPlaceholder */; + targetProxy = AAF760B517ACBC1000BA76D4 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + AA7FC46617ADB2D70039C4F0 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + AA7FC46717ADB2D70039C4F0 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + AA7FC46817ADB2D70039C4F0 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + AA7FC46917ADB2D70039C4F0 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + AA7FC47B17ADB2E30039C4F0 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + AA7FC47C17ADB2E30039C4F0 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + AAF760BF17ACBC1100BA76D4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = 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_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + AAF760C017ACBC1100BA76D4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = 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_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + AAF760C217ACBC1100BA76D4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SZTextViewPlaceHolder/SZTextViewPlaceholder-Prefix.pch"; + INFOPLIST_FILE = "SZTextViewPlaceHolder/SZTextViewPlaceholder-Info.plist"; + PRODUCT_NAME = SZTextViewPlaceholder; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + AAF760C317ACBC1100BA76D4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SZTextViewPlaceHolder/SZTextViewPlaceholder-Prefix.pch"; + INFOPLIST_FILE = "SZTextViewPlaceHolder/SZTextViewPlaceholder-Info.plist"; + PRODUCT_NAME = SZTextViewPlaceholder; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + AAF760C517ACBC1100BA76D4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "TextViewPlaceHolder/TextViewPlaceHolder-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = "SZTextViewPlaceHolderTests/SZTextViewPlaceholderTests-Info.plist"; + PRODUCT_NAME = SZTextViewPlaceholderTests; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + AAF760C617ACBC1100BA76D4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "TextViewPlaceHolder/TextViewPlaceHolder-Prefix.pch"; + INFOPLIST_FILE = "SZTextViewPlaceHolderTests/SZTextViewPlaceholderTests-Info.plist"; + PRODUCT_NAME = SZTextViewPlaceholderTests; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + AAF7608A17ACBC1000BA76D4 /* Build configuration list for PBXProject "SZTextViewPlaceholder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AAF760BF17ACBC1100BA76D4 /* Debug */, + AAF760C017ACBC1100BA76D4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AAF760C117ACBC1100BA76D4 /* Build configuration list for PBXNativeTarget "SZTextViewPlaceholder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AAF760C217ACBC1100BA76D4 /* Debug */, + AAF760C317ACBC1100BA76D4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + AAF760C417ACBC1100BA76D4 /* Build configuration list for PBXNativeTarget "SZTextViewPlaceholderTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AAF760C517ACBC1100BA76D4 /* Debug */, + AAF760C617ACBC1100BA76D4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = AAF7608717ACBC1000BA76D4 /* Project object */; +} diff --git a/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c9f0a96 --- /dev/null +++ b/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcshareddata/SZTextViewPlaceholder.xccheckout b/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcshareddata/SZTextViewPlaceholder.xccheckout new file mode 100644 index 0000000..4e15885 --- /dev/null +++ b/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcshareddata/SZTextViewPlaceholder.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 85789B93-96DD-4C4E-862D-C6AE0EA856C8 + IDESourceControlProjectName + SZTextViewPlaceholder + IDESourceControlProjectOriginsDictionary + + B762894C-A119-4BD1-BDC5-15EB3C3A8D2C + ssh://github.com/SteveZz/SZTextViewPlaceholder.git + + IDESourceControlProjectPath + SZTextViewPlaceholder.xcodeproj/project.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + B762894C-A119-4BD1-BDC5-15EB3C3A8D2C + ../.. + + IDESourceControlProjectURL + ssh://github.com/SteveZz/SZTextViewPlaceholder.git + IDESourceControlProjectVersion + 110 + IDESourceControlProjectWCCIdentifier + B762894C-A119-4BD1-BDC5-15EB3C3A8D2C + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + B762894C-A119-4BD1-BDC5-15EB3C3A8D2C + IDESourceControlWCCName + SZTextViewPlaceholder + + + + diff --git a/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcuserdata/Steve.xcuserdatad/UserInterfaceState.xcuserstate b/SZTextViewPlaceholder.xcodeproj/project.xcworkspace/xcuserdata/Steve.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..594c054ff708341938e9201647429d361bb814e2 GIT binary patch literal 33614 zcmdVD2Vhji^Em!?-@SGzTtX^INOCCzNbi^4NFlvm`sH$WNiMk*QYa$u7Eu%x5k*B1 zO+qiy1VoCWVlN1yqJW43Dq;gc5#+z`UM|T&;N!>N_w)IF|A-;?-tO$|?Ci|!?95z! zhe6-f9US~I0SHKtgoL07S~^AAS?)bm*V(0SZ!7n1uW#0Ay1Od8)t#CqJ$_u`-QC_{ zOMv^H+iXKx5)8o-qX|30o(Lj>i4Y=`2qVIY2qKb*BBBWe5ktfhS;S-_o5&$@i9Di= zs3vL%Ezv~ii7uj>=pm*OGl;thp16m&k61uFNIXI;C7vdh5zC2Zh+bkP@jS7O*iP&s zUL^Js`-u064~P$mL&QhKVd4n!G4VO^1#yb_miUhNo;XkZK>SEtCaw^_11YcomcR;F zgHb>RY=Av*24lcjAP2r+9GD2gKsbm1i699igA|Yo(m*E214W=5R0B0=1WiB>n!!{s z4NM0!z+Hd`2;2u2f=9q2@F-Xeo(9Xna_}5j1y+MKU^CbPwt{V7CwLtk1aE-j-~>1c zz67VhSKu`G8hiuJfb-x7Z~yQIzl(-1^r+!41o$50~25h%z&9N3l_p6 zSPV;GEv$zc*a(}T0k*=K@NPH@&W3X!59h&q;eGHS_%K`um&0e^3ivF14)(%6*bmph z4R9me0{6q$;bC|Lehfc@$KfgXBm4>e41a;Y!i(?<{2l%QZ;%8D$Wf$>v>|QD(WD(| zPdboe$g!k5=|$F%YOe2jdY ze2QF3K0~e``^bKB4Y`)wNNysxlH16g-8}euJ7xGu~B6*4Yjl3*@5>g_OP!d|gNLY!T#9rbcag;booF!uzN>q{-i9ymTX_MR~ znJKwja=+vO$pXm}k|!lkNtQ~UmMoJjm#menldP9)knEDYDA_GJD0xHjrsRm^W64p; zSCZ3`uO;6|ewO?q`Bn0llC|Amj8cR)}CQ|-X0HvT}s8}kF%A~TW z$y6Doq{^uZN=G$NjZ_oWP4!SyskziW)I4edwUBy*T0%WRJx%pd{nT1&Bej*M(VT`kMNNIzyeM&Qae|-%%H-OVn@FWtyM?4QZN|(qm{B z+Ld;r$AU82o%W)A>2b6lJ)RDr!{{hFnogpV=@dGZPNQ?_Lb`}9qm^_OT}{`~YPyG> zN>8Jw(=+J1=$Z80^elQdJ(qrpUP?brFQb>!&(JIAXX)qYUV1nE61|7sOYfui(=XGn z&DTCY>G$aO=?~~n=uhd-=+pGq^f&Yw`aAjp{R{moeT^X)TV^z4$JjFtj3eX3 zI5T4yUuGQR$AmIrjDm@05||Wb5|hqkF_W1*ridwHluQ*<&D1j*M$a@e-AoTNm6^uO zWFBS~GLJBem`9n#%wx>s%o3)bS;y>RUSxJN`m(U=!IS zb`qP*=CS##k}YQ|SRLEIHnL5uo^5A4*s1I^_HK3_doOz*yO4c^UBo`lE@xM>8`*8_ z4)#TM54)Frg+0i=!+yvfVLxM!v!~dz?0NPgdx`yxz0Ur{S#zT}8E3=Ua-%sr&X*g< z`Eld93EV`^p9|muxo|Fmi{;|DbS{I-8?z&*%4 z#68R{}WMn{iWSAl#B|0iSAUrxaI4mS0G&)3)W*XUnkQ0F$2uH$+ za3;nOE`%%LMvNug2@k@Pr+AuYc$VjQDR04B@>aYxKWYQvMR*fFgfB6U@FT_(6Nrg~ zKjF{IcpH8n0;>_&fWY$ze2Bmy1U}=R!2kJSWK%kI>XwdneOq@|vZh-x3*Q!&=f^*be-Kp)Z9R?j9sz6ZKUEP>M;`fwWKm*EUe@5!#k^Fe1qPgiwO!cv}@FcruMGxpwcePI6=kTx~aM#eSUF} zz(?(EYC}+QWr=QjcbQ%{t-yfyUsJn5tLq&3X$j_03}d7Y##aGZZ4K>#Mq~3ZQA?R!M%5s(4b)q|}nE{5)0mq>7OmOe!x(&MO{l;BgCtvaI5) zl$=RL7>oepuu;lRBc?yc%S8&`Ma;x}klfj+p3z6#MQFqpvxqsp#BAQ1_Z2@QV(xRi zkJw`#ac^y2ac)nyy568OcI+qSiCu*yn@`+dJ@~p<*WHhwJYZZW{6QtNpE)zw-y?XI zzsJmw;K(R{kErmdS+hjQ4-pTmWTOW=r|GeH#4Of1qn~()SV(9v+@WVC!Y(2n7YO?( zv6y&_pTJM#{RP54K|F~G8^8ztEyDgwy8R8>-)>@pT3aEI^I1N~M9w}VIZZQIMXVEM zu$ovytmQ-aFg~K6SWj#qHu6z?8$aKC*KRd3b*M^KcSolFr#m!ox*$J0us94FzLjO(@U`Gv?6ymd?5r+@B$2ef5N>=m#HsFY|X84ez-LaoINCd7XUM5~4 z4iK*ruMw~F(Y%6>;bZwYK7KXv2Jt5G7V$Rm4)HFZz$fzAd?nw^w+hS^V5S{JAzsj_ z!|J)GYe21t4^ssTMkVtbp?zSNQP}5T^%U5J#b5VSEKOCii6b;siO*7c^agD~6PDgx zCWYodLhE9k0jo8g)}$bEus9d?6vksDyoUqFyA|6LjduiZnrDf+vr#voSqG-+JPc2B zP$srNN_~dL1^BWcafHF<0H#rtj_%G^*zi z#mxpB>gJWCOCp3nqHJ17T<8;IkZJIrh+oYHzerr-v-rt;MuAt-L&kpC>mV}M9{>=6 zYly4FpTsrdI`J2A0}y-;pUda*`FsIi$QP{vkhlmWfC4mN0LvF+P$hgBujI@53V|?A z$;s(ak-^ESAyLVxDXAgB!NDoXQITnQM|un+^l*kq*BiQZo!Pn>gM4%g&!p+QG=_F; z{^eoi+J&2j1_lp}m3He`CN$D-|7y~$uY6l>gJQ9!v)y1Q5KLh__yDZt}>{*LSKr^|~%oZx`Sy_BK6m2Oj1R zynwg(piI<6;xK;1^jG-nD55d-~<;rrAY;7_2)$6o>{2Ud7k(>V6Ol;y^rK&ue%s z?^h;@hca=C-kx2CNe0K;EElH#h~m^}x`|YrBv3J(*YR=_f>|IN?{Z-QdqEE0U|Q9D zpKpa&&Et-AyvUHyJl2r~s9? zbyk~JHyz8EK2SwyhJ6;>)PP!idJ(5IAdhdBhW$VV>IluhYKCnSEJ$wdY?^32&+_c#(75A4=eaN!^KZ8=mY&A zl%LBZo)^SR_5YhKG=f1kWC;ZcqGikb^2<9-^H~cv;6o%9E$gvhxu*|o1e^GI{JmJD zm}JQav%!00gkek|w}ThVW$`Ys4#_NO^?}JM@)jv>W{C|n7Y>_ZGZTJqf{%#6b>J=V zHh2fT3*H0ogAc%m;1K^H{}BH$zmR`~U&KGkFXkUx2M&WH;A3zUd;&fNpMhiGbN+Gu zN&YE*DgQLTj9<<_!>_0R|U^1Xcjps0uAq5p8%3m$}lSk(6kve#Tn!%!G8 zyd`lFMqw$vQfN8<&~SMUV_}>qtc(&GCSnNbyj(Chhi{8~Xm|7TCD zf{5OFqxFZpfhC2LVeW7d4f9|=zk%N<$Q_xH-NJ@s9Cp2oXuXZl)C9g1R$${2mO&*f z=Qs0P`R)C%5>~-#eh2?Pf7Hw|0oBG6`xcd~C_1)bbJNSEu0C3Rt{Mysp__=>Mrva;%-F3Zk)^S<>i(6 zlR^WUG6E(|&XAdo+;Bd801FRzKmT$sT)@9#oT4y|?6&r4ZTUUj27Q}xJf&XS-Q<*X;nVz^{9F9n{5$-6ykBKy zdwXlTT7y}#O4K^WLoL378lY!dN&DdN;-m`NyRe5 z6W?2OYiHdNfLG$rM*NA|nPJh5;h|B15wlGDcqLplT#~I7Xt$1k7t?NPd1ZiM zdO*`ulV1aFg3p_oXmBgsbvtgtepZ2-_Q1W^*D7$+2mFVEP!QShWq81R4NNZ%!gp^= z-uK}9@B{cEJj5U3KjIJbNBEC6aG{FGyWL=`6~D=p49j7Jp6(G0#E7$f0F;||Cd|jl0b&v_~T|< z1oK)}%CHSEwBby&x(Wqr0RG8;*$c1pr~cK}(Tkin(3^xLwhUI0Bq<>&k|r7cH2*dK z4S$9|yNcvUDQQ7kl2-gV{#*V#{(Jt1|2tc!dS-|MZ=BHJup!1G9Z9EQj77R&ijuDU z`H?mb=|Os$@fhh%CJ}*~WiF%-=}V3y{mAj;1aczjPX>^IWDprlhLE9T7#U7Rkdb5* z8BHq47&4ZOBjd>gGLiq0|C#@lzrAP|5E;9GAR0Tux%0+t9^BOpV- z76Cg191w6qULU9^fOjL};c z*gBjn?M7sNQ_1T8J~AVjCL=vFSKj8!(QO>}ib^(Vdcbty-YGz<@4`n;Y=anP;LB(1 zY1Oo-j08=@hMxvo9a(Adp%KC1zTHhYib9J&h4>oZY zsomYs-r3p}q%UY{Z^Ka!tv&crdndl97T*kGi{iBGTiQhh1_yR&TY`#b;HZn%kvOL` zO9)oDm2pb51nQa7Y_@S?f2w3w=Z9|;9+4j1i-(^jf&u~;E}j7WH>i27GaYrS<@Y- zVp_F-BNXB9tmBj7@RUl{c*o(*E{#W8w7>bxoUqHq(HWI&_AR6Tn|tx!m%7PVnsgd( zJk7UJuZR?#QB91>wCDZ)B(sX1>-kw?TQ0AGzX=%)vEXw1m)l8DS`m8{`E zgUn4T)l7=LEDmn3lC}P41|N|U=6maP5eLWrnz%6||J&l|IEL*%Z_SvI{sVDf7nQ8% zKSFw=;TEK88*qXNp1lGgpb>k*I)y-u;R@%7h>P2Q7MBs!!3fsnXCf}{|7DgmTbmOi z4xaz<=)s=f#Nq_BGqGncTz zjb0t{4Ea62cqY%1=g4o#?-1}oz!!mW2>7ie&yzn8{=&(0JOUH&1%(*8QqZYy#qk;@ zmtcu0gaSLaZhBRw@6zL#!qg^pC-$Z3I*oV#HJR9Hm~1d)b#?U!cVRv^buxJ_&3hSd zGo3GAE-V*KD`{O?a- zhjX@jQ-v^rkm&GW(+nh>1YfeOlt?8O5=)5{0$~V*BM^Z=IPHk$FhsDUpj4h(RD$oPcpH$1eVAxww|0ia|i*C4mAZCP*eq z{3Uo5;}J+eAQ6G2m69Myum~s_ft3G!O2nS&wjX1hfFgKkDPtwrN3>EBCyAFNNHE@M z2uwmC9f6FMl4MB=;V;2YG7-q)pFm);;EQv*iT(e3+bPPiKmKCP%#hF!MI`3PFwBuv z_>&?m6bJDRtx2AwSeR12q(D+A!QP@A1ac9`Lm+>pq(o9Gu1Ns`h5!3&vWK43^tiac zLc*d4xvEa0yDfV*NE-2?=n*JJphQ@dQtX}0jUwF|39!;fycM2 zFohMN0{4YS4N>D6NuMx@5jRo4WF=m&)d*-2j>^L8g(J{}^@{4-+jAB#Q7HELDln{y znIX|aH2Toi+$h;9(0C+0A=xI`E|R7R0sRn-cUb@Ro0rH>3Pt!JKfNS*`L>W=ksJ^q zwIE;^g0$_xp84ZMaW|y8ByUOH7bZHQxcflzp$MoA;dn5k?iJ>#7_)gdT|F~AGF*YF z78MpYh}9>OF9fVcQsk23k`tI}Um`FCflh&HT_V*sU$XLCW<)C@ICNI|O#E{=$<9cO zw!w%bJ1-fq4SEomI)vZ0^J|}6eal2IN`AjB#r}|76(>3!ff+-9wr5!{`O^qU5KIHs z3I!GnLbz}~vd?;TG(hq@q5SS-`#1UA+%0~Qr zc}1-_Va#jgcw?Ah8Ayc*SdO&3R5%rZL1GJGJ_7d(ARiDxZh4z<_rx+i0GlN~O}om3a_>hlW;WZ=f@AP$^h3LlTV2rV4IL#6qeFqgR5! zLIfTW&|4&;xBZIK#3JL2Bcmhnj6fyDcT#sSa_<803>fQ{Lk8r<;|Lg+haa2kjne8g=(= zF`Pxs79lM~;OQYqJFLB&b{ipug<{SzEyKOke0)hq;VYKqz0~~(M-KW8JN{7vzRYJ- zvQU#}-O%2MJ?e_&@ZiYM$cTX8;OLNm@Td?)Ky>7!h=B04aD^g0IWj6DD%mu~B5JWP z2EM&{wwHPg0UUxeEKtB?&YMDY#YlbXNqj{{J%vCoFF#6HfBHqYAcPQ!qhryJ{Jh`??EYu{VOF+&oYc^3$@Duej^$P-f5ZH^rJ}mE&WFml~7>|Fo zmRG1hM*?|`x=#It0OpZb5Ws;$gMk?u!ovp=9*1d?u%IP0C8U;WaR6$*4Xm!m7punN zApnvRijIx@dqqPwG3+SW7#CM>pNUvJ52T56QVUBfYn%x%Ko>C~6sHLcIxMhkj7M!qH>exC@MmFHcqRFY^t7>(3EAOzgXZ*T^jdWW7H#-0GX1lwd+e@=^>gG|YrwU+4t?5 zE3z*_co?m~q2|MgGT_DOinyIkat#1riR-Jl0(antlWU@IEtL#_6GT7(uBK82>Tohc2j~F{z{5E5{ROZK z>=g+Nf%q>@12_94Y~@#tLYZc0wq_`C6mwobe#8+POlKhwdSI*27PKwS^P|3?t!QiN z1TCX&jC=ld1Pi0`D1rd0UVL@;h(Zk{KO> z2)=V8j23P*?q4@5?w(=z*DVD8i@?VS9POjy=>!Bm zLEuw9qjZ`O30T&o(>FGC?C6DYC4^aB?{;)dNPfpVUFQw8{P?l zFA%`m<4b`Gg9-L@fjHIA|4#&Y(4`_a$Nw9V19YW0*vbFYV8d^GXq7nFssFXG9+AK5 z=@uezEv=!ow2p3|8|fxmPvhXI(+GTxz&8k-LEtO`=MeZ7f$!GR2D+8-r`ri@x&ez< z?1ugxf%C%Ixbg_u(jko z*eR_%Uj;fT1w9w?>v`GQ!k!i^R;fl1dfaJ)~@BoD( zBqc07JSsUXItu6C3_AEX~b-~s|aBJdLeKO=x`re6`bh`=QTep^Q`#EauYKT0pA zA0xczB{W{3%Xn?}A@~%6&mwq(mmyM$NDI+k7Sni=adZ-vrg-kfP3_b2aIqE~j3$_S z4mcnITSID7rIfB5WBfEu#~w~rvvn!$7E+pK2p|Vjl||TtaK+)wR>lkjjw{hOwv7Nm zz)pmZQ>Fx7!`;$xtdDT~sS-ctsOxp6`aEgM-RRsP-;2Hwg5x~~s4Frkx^z-y)TpdRsr5*hOy@TFK??MnDoTu@Gk(yY^ zLM4K;5uA^3+%{ISLRBA;nnupe(6#A%Fmns`{;Ra)Ss2m1MHX8RBsB>ckB+}K!1auhrJqDT$Rnx(xb8uKZKCXxf z_LX8_d)?fPaYo2tgV_rjI^Ce~ciDpp5scNEXt;aeW|NiI6^F>T`@fLD=@wpVME^ z#}VWZlp<)+PoKo=bP7RBfz7Rj5=-OF(7{CS))ix}Zfi9DI#`tha}l-|%-ar>Ah`K? zhOWI;*WEco+^uJ^9YLQ%&}zt#_?|vLEcllGQE2fKf}?mJyp+SMh+x-E6m|%ioFnu_ z`pQUi`W?^dDuP0BCg{&+h~r)tq{Lqc+73zy1~42>*JmI@G7^SjXog`h2}dJnhoC)z z4hT9T=!Bs28b-=kFqVuJ{%;hWj^G#sT@W0LpxpR(BDN2BziMGW2{x!;6;_F)F%nJ4 zv^SdDLLC)z?h#xUMwx-%2pNIGaRZBWlh0*@cP^%PlcwWPRiPr|kPxmiy~DZc7)nP^ zJ&tr8sH}xc{sd?O#9{~oJi)jy9)#`4K0d~i5wGW7R>ECwh@s? zW#SO@F^+tv?0X}^8A97}#i-4fzJ^f&x`dfn0%&SWam^LQz)Q1 zQtG=n+hV2!Cz;<&_Mxepvvwa-DuDaj?f-U_EO9x@@qT715DehuSl|qk5+RY;<33zW zFf|PJ7xyx?2nO{sbqEFvO6Tv1UDHm{G7SO<9fBdfOe2D!yx(x?%Cs=;SQ0S?rj=B>wOs4@e=s39qLH#1L=agk0rFaAr)-d-n_c8OC`x@k>6n66eTi(g$QPu1gN-w-Xo^3WZq{! zU_N9HAvhVq90cCg?72dcB5`;XKVmA zF>(C8_`TTtq|m&;*nGtL0ixVuP8;PGEHcWi|8jOEwmff|$iRe$9r+nC;tLju#QZ_n zb{7yV6NJ$)lO-}5U$8|7D+Wy#<`?DXO5UlHEtq@KE z#$(^6iW6&tQ@2@L7F$yF2sREHdaMKMj2$zqBa4kH4T9P}b_|Q{C>_Gty#KnEQ_bL% z1jMk%Cduf!F<~fYeQpBo%VHJTgrJ_!s2U)GVCUnW(PlmUSsYx{%LX9W(o6W@R6snn zF=m6ALeGjdI48(7U>F-Abid5bPczU^<(H=Qvmhi=E8k9f}o97oRb>c3w%dgUzN_z!sZzDq%|z>_KoU zpE0z~UP<@Xnf0na(5Tc%zB- zzgH46Qq`2N%+6W3z=P~V2x0+wpI{%1GVSI@@nq|j)Un8HSsrEaU9C_v>tl8a z`vm(WVZlDdE@hu)mtlv$;K&zuvv3;CGrEBs8;!?l5goyQgNqP}Z=5>Bc+Fd0A^0eQ zk0JN~f=_Gv># z3r(5}Tl2?2KaH zAg1@>)mUnz-ebJnyyLq9{e+Gu-$E$9^e5|2s`h+x9E= z>miZ&4T4JtYKF1rgiZG?`yGN$BlyhFru%{Y>88!|Gy4mI%Me^{EXRjx6UQ962Y>nH$5oaIOfhL2xaC z>kwRz;06RYBDiS{H&!Tt&3WSgy*PZ9ejY0Wyn#0hKXxMclIYMLaPQ)Z(HLvtnyj>~ zOFea{N~NeKv2$rsn_#Qpi3uaN{&=^*t(+d8QE!3*tfu+g>gh!7aU9 zD1uu}(p*%5$wov?jU%~e%=jF3L~QHj@G)$=z&N*&M&g|o7tbZ*dwMQ`N#&9de8K1` z*nvL_{~15yM=$Vx_-KD;I9Xiw5S}>*?ixJNaQR%}5LVdoesQqE16Rr^@hb+~BR;(x zHdb+*glR5ST#fJwn}qUSBPv6$)SPB$EG>e2hQ?~-nnX2b0@K1x!&TWi1J}y6aqV0O zH-+ouy0~txhntEZK0fb9@MQ#FLGS>AuOj#wg0CZZ5WzPPd~*Xgo$%rA!v9a_W^uEz zb>c&Kaab3>B^2 z2ptBBTZ&~q#6XW*TM7GmFm_?!nqIWt2ixWf`+wjPSO@_cd|@;@Maez*>=t~B+NT-4 zPJ&}r;OtvlV*iX#dGJ;&gk3e*TtHM*;%>tq4~{3iH~Q&~M~}g7S&eOY%cL5MXnBv= z5eGRKaH%hyHUn2Y>*%VOX1bg@!aYh@aErOexW~CAgCQSgu^tG%gW$&qzIPb6e3E;L zTUvqdy1R@iD+s=ey@wvR%TY4wF>V>R+!*{YP|aHO()HuV&k&lyAx+HqEZ2t>2lpI@ zh5!2qe$dDDb6EU;h~P)Uw#JcV1vsh)7sBZfmun!#;|RA7W4E5D;5KrbaCu6si?Q3G zqYFotB^&Uyj1b}^Xz)WaiHOu@4p&if9E@f#2inhV<+ceb^>z(LK;&cY1#Sno6JxQ9 zdy(7Cy@WBlb3_Y=H^X5Bk5mtjXc4j7$L$}OSRc1fs27ec4(=8104DYz$~W^;Kldv4 znt=4}n~WHkGFTgw+a%To#f3kOT=6D{&7@E9+M5>sUA)`{hd~Kp0q^DT;v5t4`j9&$ z_|i?)%8fe#SK{pFKH?4w_}uzxSp87bx_``lj$Jq0QSKA&Q|>eF7=m9QcpSkK2%bdn z%T?SL+;OAY`x3!Z2p5wv>b!G;EE!QT3HNMfDsU`*kgmqp1X^SI+@OLPRDZ&SuJ~;Y zx4yesftj#A$9*S=*>4g2s+ap7!P9qAJwI|k3qt-U1i$X(uw;Rfgct2x2<_ir_^AFCq9Ff|n7zg5dA#2!E-U)LZI<{~agw!#{B<9fE%# zcokv4BL4Lng4czA|1#1U&tOt#XM5+(oN)`63A$rY*y7fLMi8D2nmEP;JE5ELB%Lxt z6!%8=(7+v@DD4IJk=S(*oX`|M6Zlj#xNgP%*z;85?j#>HY`5o#XZi#@GzM)7{qyQH0ViX?Lm7P%;J* zIumkYBL2#^7$OmWrIea(!(S(ba2UqJ^dmUH;tBjkQp@mHNWFmXqQ9kY;ComSU%xU8 zhc8+21uJ8NzZ%LO-zWw$!T9T-BA93<7JnU7GLweC4k{CW9h4ehWjw`fX7(~au>gNT zQyg2ywz6&PO#GEg_p=Mwhwv9KEn=5p&&9KBFWZm5d}%Fvn6t!I>}>q?M?1Ke@RuL$ z=U(Fua&O|VKl+3_$$gK%@(4>tJd3-f^QDWVPe_+Zd!_58yQI6Nd!+j;Vl6T)@+}H2 ziY-blsx4|Q>MZIlv=;YTthRXD;;_XLi=!4NEzVk;x42|+#o`Z(KP@GelqF*+vvjxg zwG6V1vrM(jvQ%3(Tk@9kEg!e+wOnht-g2Ym^Oid-cUkVX++(@V@}w28l3T@CrCOz1 zWm-+PDz+-IDznm9HCq|1+N?UPrdiFfnrSu5YL3-IRtv2bSuM8u%^F%utZ8f3y1}~3 zy2pB&^$hD{)@Q9RTK{H!#rhBHKdrA@-xy^%%6gP+lGVLbY<=BGyTx|P>{i=tu-j?(vfY<V;tig z6C5)fs~vTYO^(fu2FF>Ba~zT5J&yM}e&cw-@v7quC*VXnu})GaODAh5d#4FbNlv*= zc~1FGg-*3jdZ!krR;PBSDNbEZvz>USxlZ$(?sK}|X@S#jr&CTBoC#;>EODltS!b!U zrL(oO%-Po2$9bIdc;|`E0nS0rAwc*L9)mW3EeFpLAX7y4rPv>n7LDt}nRmbbZnFCD+$n z54j$7{nYiC>q*yBuBTnUalPPr)%8!;Yp#E}F>X>fOE+sbcQ;QrFE<~zac=Y77P&p+ z*5|g;ZMEA5w@q%F-L|^D?snYmC%0>3$+6T}W-K>WHr95m-B^dQPGfz>jvG6E?8LDv z#%>t9Y3$~)Tiw0gL)^pMBiy6hSG#X_-|zm4`>XD+yT9T7mirO+qwb%&A9Mf0{e=6M z?tgkHJaRp{JRb5`;_;Nn(;mw`)_AP**y*v`V~@vvk5@ci^*HHq&f}8D4Nu@ndQzT@ zC+BJB>EP+)ImXk~bF8O_=S0sa&sxvvp3i!&_1xw8y5~X9H$30+{K)fT&rdu*^ZeTL zXU|_efAzd12XaffwOl5*mD|Z3C+6nUCFU0y7&mDkDZ zm9FeyngYz z^Sukbi@i&|mEINJRo)HWo!(2mw|jr? z{k8Yc-q*eV^1k5%e55{BKBIhWd|Z9T`%Lhe=o8=*%N39 z=}Y@^zLvhDd~JR0eVu$=e8>8F`g;40^PS)u;2Z24<{Rm&@Qw3L^iA=dXSLs*nSL?UhZ@b?P zzg>R2$Ilu6(D;Sp7mZ&${`~mg$6pKa}&Os@WaIL ziOCaFCr+A}IdS{MS0=tX@%4#s`iJ-@_$T?N_)qeG!~cl?QU6csc?RKJf}qf#h@cfg8-g|kZ4TNN zEDsI}4#D-RB7>g`-W0q!cx&(rAaQAR|xKDUscu06SPA`oPj|ndgzdL+E z__pvp;jf2(6#jYmiSSe5Ux%L!|0(>}@ZZ9(g#Qu#XM{sUd_;CcSH#^B_eDGwu{`40 zh`xwb5o;s1M!XQQD`I!Vo``)BpGDk=w2F*~Oo+^gEQzd%tc%n{Hbm+pJ0p7{r$^ou zd3WUO$oY|rBA@92=|nCSTEr0CS>^yvKPqUh3S zWpqV!RrJ*8XQDSmABjF5eKz`H^tI?43aFqItincNr*Kp_D_j+072_1)ibO?@qEu0? zs8ZA_)QVaG{ zoZ@@M1;x*bi;8QC8!<3O5<|zZFi0O~n7_&KMTg;A_7h?{@ydLvr z%-b>V#e5L+Y0T-EA7cK9g|SpD8*3439qSl7Ce|(1J=QbUE7m_YGB!0fCpJH}D7G}V zJXRg6jctt8$F{__#!ii$6Z=r?lGvwWm&LA#?TuX@yD4@{?6%k!Vt2;A9Q$7EvDnkG zXJWsNJs7doO_&qTtr-STx?uITyosxxZJpcxT3g{xUx7^ zTvJ?6-0V0MH!p5}+=95r;+}|G8n-O&nYd@;*2Zm(+aLF4+&gja#~q405_dfA%ed2V z-^87Z`!4R+xNGrLyluQo{MdNUc<=ae@xk$7@saV-@v-so@#*pT@#XQl__p{d@!j#$ z;_r&TC;qj{hP4 z_XLo~M-q-EoJ=^M@LM8Gv`Dm0v`Mr} zbWHR}^h)$i^h=zO=${yon3$N8SejU#Se00ts7`E7Y)$M)>`d%VoSHZ%@qxrA5|<_} zPkc79FL7n!*2L|JI}%?^ypVV`@p=-GL?+QmY?60UKvHm0SW-mNh{!^Qun34lKNWe!PE~@KT7>B^>XUXZd9LWlhM6%2H&- zW+i03m~}Ag&8)Yx-ka<*IdpRP`mEk=SXuDIaN8+au(-2pR+6HrJQ{^ zFXz0M^JUKIoHIG!=A6&@G3S?@OF36^uI5_h%5rUU?Q$J+$K<-@y64JseR9X;M&xGZ zs&gOBU733%_iXNOc_7a^&nwS2Z+xDAUQk|WUPNAWUTj`MUUFVpUPWGYUTt1oUVWY} zuPLu3uPtv%URU0Ny#BnMd9UYvk#{!lTD~klEI%PXJHH^mIKM2vD!(>gov+EClD{;6 zMgE5TE&1E?cjoWO-=BXV|F!)0^AG2LnSVC_yZj&Wf6Bj{|406x`F|A<1^xwT1=R(* zf~JC&g4Tk&3T77ET`;>~e!+r*hYKDlSY5Ea;H83n1+NsmR`5>2`vo5s94`2{;6%Zx zg0BnC6#QBU3MGY1p|sGdP*ym)(4o+$(64Y}VPIiMVR&IwVN79MVOC*jVMpP-!siP2 z7rs+?w(w%%wZa=ku!t&Ri)@PQiX4lai(HD_ihPTLiqeXdMGZwWik1{TRkW;VMNw~2 zf6>vRlSOBWzAZXm^kdP_MSm1aikV_*@%ZA<;=JEeotNjXO8ru0zCl|jl-WwFOMjXE{`qGEiWrCFRv=smN%9+m-FQhmoF-Rtb9p@ zq{6LYLWO@tU`0qpOhtS}QbkHdMMXnJPsQ|#nH94uP{q88`4tN)mR2mUc($UiVpYZ3 ziVYRdS8S0g;tnN^urSy)+8Syrj3Y^rRj zY^&_5oLV`fa%SZNmCGyFS8lI-rSf3qTb1ut9;!T2`AOwxmETlesJvQvy^5$JtEeib z%DXD0D!eMHDyAx~Dxs>VN>x=~rK@VHYN=|iLRAZ@9;sSfwWR9Fs+Cpisy0+@s@hhy zqw2+~m#SW?davqO)yb+;Ri~@YRefJ|q3WlqKdNE%sA{Kbm+GS%SWIzgSJ)~N4OuT;OL{#1RXUQ$20 z-l5*P-nHJnUS980?^hpHA5$M!pHQD%pIV<@pH-h-Us*q=entI``eXIyHDfd(ngmU< zCQXx}nXJjt)M{EZZJH^XZp}2!49%mO6`EC=wVDl@=QTStFKYH^_G@0z9MBxooYj1% z`9brO=2y)nEznA|j8>|((vH%)YTdPRt&i4EJ3$+zjnT$yleDSYN!lW9skU5OrLEQ0 zXwL7)%YY%A;YmaI_)qbu$p*^KN zt^G!OR{Ndyyv|jZqHEL5*Dcc>)Lm+@XqecL*3i<>(=fN;!G@Ldmi$+=F=thS|m&UP;o{e6Ok&W?Vx&6`UriLK2KkxpRIpd zzfr$izgPdV{#E@!{hRt@`m_4)^grl-(*LTz)I6%$wb`@TtJ$}CVsk)qP;*FgPP3-D zqq(bjYV(ZdyPIb>KiK?G^TW-LG%s)NZ(iNJu6bkg_U4_xl zErl&5Ey|Y4mYSBj7EMb-i@wFsGN%Q#%xjt7vY_RmmPc9^w>;kRWXsZ)7g}Cx`LyMH z%TrC@RDJl;T6Mc zhJ%I=3`Y&08NM)_G@LSAF#Kxx&G5V7dMnXNwo + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/SZTextViewPlaceHolder.xcscheme b/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/SZTextViewPlaceHolder.xcscheme new file mode 100644 index 0000000..5c99e75 --- /dev/null +++ b/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/SZTextViewPlaceHolder.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/xcschememanagement.plist b/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..81e6810 --- /dev/null +++ b/SZTextViewPlaceholder.xcodeproj/xcuserdata/Steve.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + SZTextViewPlaceHolder.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + AAF7608E17ACBC1000BA76D4 + + primary + + + AAF760AF17ACBC1000BA76D4 + + primary + + + + + diff --git a/SZTextViewPlaceholder/AppDelegate.h b/SZTextViewPlaceholder/AppDelegate.h new file mode 100644 index 0000000..5f108d8 --- /dev/null +++ b/SZTextViewPlaceholder/AppDelegate.h @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// TextViewPlaceHolder +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/SZTextViewPlaceholder/AppDelegate.m b/SZTextViewPlaceholder/AppDelegate.m new file mode 100644 index 0000000..834f71b --- /dev/null +++ b/SZTextViewPlaceholder/AppDelegate.m @@ -0,0 +1,46 @@ +// +// AppDelegate.m +// TextViewPlaceHolder +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/SZTextViewPlaceholder/Base.lproj/Main.storyboard b/SZTextViewPlaceholder/Base.lproj/Main.storyboard new file mode 100644 index 0000000..28a955d --- /dev/null +++ b/SZTextViewPlaceholder/Base.lproj/Main.storyboard @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SZTextViewPlaceholder/Images.xcassets/AppIcon.appiconset/Contents.json b/SZTextViewPlaceholder/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a396706 --- /dev/null +++ b/SZTextViewPlaceholder/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/SZTextViewPlaceholder/Images.xcassets/LaunchImage.launchimage/Contents.json b/SZTextViewPlaceholder/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 0000000..c79ebd3 --- /dev/null +++ b/SZTextViewPlaceholder/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "subtype" : "retina4", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/SZTextViewPlaceholder/SZTextViewPlaceholder-Info.plist b/SZTextViewPlaceholder/SZTextViewPlaceholder-Info.plist new file mode 100644 index 0000000..ff8ca03 --- /dev/null +++ b/SZTextViewPlaceholder/SZTextViewPlaceholder-Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Example + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.StevenZweier.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/SZTextViewPlaceholder/SZTextViewPlaceholder-Prefix.pch b/SZTextViewPlaceholder/SZTextViewPlaceholder-Prefix.pch new file mode 100644 index 0000000..9f4c510 --- /dev/null +++ b/SZTextViewPlaceholder/SZTextViewPlaceholder-Prefix.pch @@ -0,0 +1,16 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#import + +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/SZTextViewPlaceholder/SZTextViewPlaceholder.h b/SZTextViewPlaceholder/SZTextViewPlaceholder.h new file mode 100644 index 0000000..0c29271 --- /dev/null +++ b/SZTextViewPlaceholder/SZTextViewPlaceholder.h @@ -0,0 +1,31 @@ +// +// SZTextViewPlaceholder.h +// SZTextViewPlaceHolder +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import + +/** + This is a textview with a placeholder. + */ +@interface SZTextViewPlaceholder : UITextView + +/** + This text you would like to appear as the placeholder. + */ +@property (nonatomic, retain) NSString *placeholder; + +/** + The color of the placeholder. + */ +@property (nonatomic, retain) UIColor *placeholderColor; + +/** + The font of the placeholder + */ +@property (nonatomic, retain) UIFont *placeholderFont; + +@end diff --git a/SZTextViewPlaceholder/SZTextViewPlaceholder.m b/SZTextViewPlaceholder/SZTextViewPlaceholder.m new file mode 100644 index 0000000..43b6ebe --- /dev/null +++ b/SZTextViewPlaceholder/SZTextViewPlaceholder.m @@ -0,0 +1,225 @@ +// +// SZTextViewPlaceholder.m +// SZTextViewPlaceHolder +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import "SZTextViewPlaceholder.h" + +#define kPlaceHolderTag 777 + +@interface SZTextViewPlaceholder () + +@property (nonatomic, strong) UITextView *placeHolderTextView; + +@end + +@implementation SZTextViewPlaceholder + +- (void)awakeFromNib +{ + [super awakeFromNib]; + + /** + Initialize the view + */ + [self initializeView]; +} + +- (id)initWithFrame:(CGRect)frame +{ + if( (self = [super initWithFrame:frame]) ) + { + /** + Initiliaze the view + */ + [self initializeView]; + + } + return self; +} + +- (void)initializeView{ + /** + Set the default placeholder color to light gray + */ + [self setPlaceholderColor:[UIColor lightGrayColor]]; + + /** + Register for notifications when the textview changed + */ + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewDidChange:) name:UITextViewTextDidChangeNotification object:nil]; +} + +/** + Called when the placeholder color is set + */ +- (void)setPlaceholderColor:(UIColor *)placeholderColor{ + /** + Store the placeholder color + */ + _placeholderColor = placeholderColor; + + if(!_placeHolderTextView){ + /** + Placeholder doesn't exist, create it. + */ + [self createPlaceholder]; + }else{ + /** + Placeholder does exist, update it. + */ + [_placeHolderTextView setTextColor:self.placeholderColor]; + [_placeHolderTextView setText:self.placeholder]; + } +} + +/** + Called when placeholder is set + */ +- (void)setPlaceholder:(NSString *)placeholder{ + /** + Store the placeholder + */ + _placeholder = placeholder; + + if(!_placeHolderTextView){ + /** + Placeholder doesn't exist, create it. + */ + [self createPlaceholder]; + }else{ + /** + Placeholder does exist, update it. + */ + [_placeHolderTextView setTextColor:self.placeholderColor]; + [_placeHolderTextView setText:self.placeholder]; + } +} + +- (void)setPlaceholderFont:(UIFont *)placeholderFont{ + _placeholderFont = placeholderFont; + [_placeHolderTextView setFont:[self placeholderFont]]; +} + +/** + Create the placeholder + */ +- (void)createPlaceholder{ + if([[self placeholder] length] > 0) + { + /** + If we have a placeholder check if we made the placeholder text view. + */ + if (!_placeHolderTextView) + { + /** + The placeholder textview doesn't exist + We need to create it and add it to the textview + */ + _placeHolderTextView = [[UITextView alloc] initWithFrame:self.bounds]; + [_placeHolderTextView setTag:kPlaceHolderTag]; + [_placeHolderTextView setBackgroundColor:[UIColor clearColor]]; + [_placeHolderTextView setTextColor:self.placeholderColor]; + [_placeHolderTextView setFont:self.font]; + [self insertSubview:_placeHolderTextView atIndex:0]; + [_placeHolderTextView setHidden:NO]; + [_placeHolderTextView setUserInteractionEnabled:NO]; + } + /** + Set the text to the placeholder text + */ + _placeHolderTextView.text = self.placeholder; + } +} + +/** + This method is called when the textview did change + */ +- (void)textViewDidChange:(NSNotification *)notification +{ + if([[notification object] isEqual:self]){ + if([[self placeholder] length] == 0) + { + /** + The placeholder wasn't set so forget it + */ + return; + } + + if([[self text] length] == 0 && [[self viewWithTag:kPlaceHolderTag] isHidden]) + { + /** + The textview has no text (empty) and the placeholder is hidden, show the placeholder + */ + [[self viewWithTag:kPlaceHolderTag] setHidden:NO]; + } + else if([[self text] length] != 0 && ![[self viewWithTag:kPlaceHolderTag] isHidden]) + { + /** + The text view has text and the placeholder is not hidden, hide the placeholder + */ + [[self viewWithTag:kPlaceHolderTag] setHidden:YES]; + } + } +} + +/** + This sets the text of the textview. + + When this happens we call textviewdidchange to adjust the placeholder accordingly + */ +- (void)setText:(NSString *)text { + [super setText:text]; + [self textViewDidChange:nil]; +} + +/** + This sets the font for the textview. + + When this happens we want the placeholder to be the same font so we adjust the placeholderes + */ +- (void)setFont:(UIFont *)font{ + [super setFont:font]; + [self adjustPlaceholderFont]; +} + +/** + We want the font of the placeholder to match that of the textview + */ +- (void)adjustPlaceholderFont{ + if(_placeHolderTextView && ![self placeholderFont]){ + /** + Set the placeholder font to match the our textviews new font if a different font hasn't been set + */ + [_placeHolderTextView setFont:self.font]; + } +} + +/** + If a new frame is set for the textview the placeholder should match it as well + */ +- (void)setFrame:(CGRect)frame{ + [_placeHolderTextView setFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)]; + [super setFrame:frame]; +} + +/** + Deallocates the project and removes the current observers. + + We also release necessary objects if this is being used without arc. + */ +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +#if !__has_feature(objc_arc) + [_placeHolderTextView release]; _placeHolderTextView = nil; + [_placeholderColor release]; _placeholderColor = nil; + [_placeholder release]; _placeholder = nil; + [super dealloc]; +#endif +} + +@end diff --git a/SZTextViewPlaceholder/ViewController.h b/SZTextViewPlaceholder/ViewController.h new file mode 100644 index 0000000..90bf16a --- /dev/null +++ b/SZTextViewPlaceholder/ViewController.h @@ -0,0 +1,13 @@ +// +// ViewController.h +// TextViewPlaceHolder +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + +@end diff --git a/SZTextViewPlaceholder/ViewController.m b/SZTextViewPlaceholder/ViewController.m new file mode 100644 index 0000000..1324cf6 --- /dev/null +++ b/SZTextViewPlaceholder/ViewController.m @@ -0,0 +1,46 @@ +// +// ViewController.m +// TextViewPlaceHolder +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import "ViewController.h" +#import "SZTextViewPlaceholder.h" + +@interface ViewController () +{ + SZTextViewPlaceholder *szTextView2; +} + +@property (weak, nonatomic) IBOutlet SZTextViewPlaceholder *szTextView; + +@end + +@implementation ViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + /** + Example of SZTextViewPlaceholder created in the Main.storyboard + */ + [self.szTextView setPlaceholder:@"Placeholder"]; + [self.szTextView setPlaceholderColor:[UIColor lightGrayColor]]; + [self.szTextView setTextColor:[UIColor blackColor]]; + + /** + Example of SZTableViewPlaceholder initialization in code + */ + szTextView2 = [[SZTextViewPlaceholder alloc] init]; + [szTextView2 setFrame:CGRectMake(0, self.szTextView.frame.origin.y+self.szTextView.frame.size.height+10, 320, 100)]; + [szTextView2 setPlaceholder:@"Placeholder text to show the capability of the textview to show a multi-line placeholder."]; + [szTextView2 setPlaceholderColor:[UIColor lightGrayColor]]; + [szTextView2 setTextColor:[UIColor blackColor]]; + [szTextView2 setPlaceholderFont:[UIFont fontWithName:@"Arial-ItalicMT" size:10]]; + [self.view addSubview:szTextView2]; +} + +@end diff --git a/SZTextViewPlaceholder/en.lproj/InfoPlist.strings b/SZTextViewPlaceholder/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/SZTextViewPlaceholder/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/SZTextViewPlaceholder/main.m b/SZTextViewPlaceholder/main.m new file mode 100644 index 0000000..d01b9a4 --- /dev/null +++ b/SZTextViewPlaceholder/main.m @@ -0,0 +1,18 @@ +// +// main.m +// TextViewPlaceHolder +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/SZTextViewPlaceholderTests/SZTextViewPlaceHolderTests.m b/SZTextViewPlaceholderTests/SZTextViewPlaceHolderTests.m new file mode 100644 index 0000000..3467f41 --- /dev/null +++ b/SZTextViewPlaceholderTests/SZTextViewPlaceHolderTests.m @@ -0,0 +1,33 @@ +// +// SZTextViewPlaceHolderTests.m +// SZTextViewPlaceHolderTests +// +// Created by Steve Zweier on 8/3/13. +// Copyright (c) 2013 Steven Zweier. All rights reserved. +// + +#import + +@interface SZTextViewPlaceHolderTests : XCTestCase + +@end + +@implementation SZTextViewPlaceHolderTests + +- (void)setUp +{ + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown +{ + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample +{ +} + +@end diff --git a/SZTextViewPlaceholderTests/SZTextViewPlaceholderTests-Info.plist b/SZTextViewPlaceholderTests/SZTextViewPlaceholderTests-Info.plist new file mode 100644 index 0000000..7c11ebe --- /dev/null +++ b/SZTextViewPlaceholderTests/SZTextViewPlaceholderTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.StevenZweier.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + CFBundleSignature + ???? + + diff --git a/SZTextViewPlaceholderTests/en.lproj/InfoPlist.strings b/SZTextViewPlaceholderTests/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/SZTextViewPlaceholderTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ +