├── Default-568h@2x.png ├── KTTextView-Sample.xcodeproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── project.pbxproj ├── KTTextView_Sample_Prefix.pch ├── main.m ├── Classes ├── KTTextView_SampleViewController.h ├── KTTextView_SampleAppDelegate.h ├── KTTextView_SampleViewController.m ├── KTTextView.h ├── KTTextView_SampleAppDelegate.m └── KTTextView.m ├── KTTextView_Sample-Info.plist ├── LICENSE ├── README.md ├── KTTextView_SampleViewController.xib └── MainWindow.xib /Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kirbyt/KTTextView/HEAD/Default-568h@2x.png -------------------------------------------------------------------------------- /KTTextView-Sample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /KTTextView_Sample_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'KTTextView-Sample' target in the 'KTTextView-Sample' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import 8 | #endif 9 | -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // KTTextView-Sample 4 | // 5 | // Created by Kirby Turner on 12/8/10. 6 | // Copyright 2010 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | -------------------------------------------------------------------------------- /Classes/KTTextView_SampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // KTTextView_SampleViewController.h 3 | // KTTextView-Sample 4 | // 5 | // Created by Kirby Turner on 12/8/10. 6 | // Copyright 2010 White Peak Software Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class KTTextView; 12 | 13 | @interface KTTextView_SampleViewController : UIViewController 14 | { 15 | KTTextView *_textView; 16 | } 17 | 18 | @property (nonatomic, retain) IBOutlet KTTextView *textView; 19 | 20 | @end 21 | 22 | -------------------------------------------------------------------------------- /Classes/KTTextView_SampleAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // KTTextView_SampleAppDelegate.h 3 | // KTTextView-Sample 4 | // 5 | // Created by Kirby Turner on 12/8/10. 6 | // Copyright 2010 White Peak Software Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class KTTextView_SampleViewController; 12 | 13 | @interface KTTextView_SampleAppDelegate : NSObject { 14 | UIWindow *window; 15 | KTTextView_SampleViewController *viewController; 16 | } 17 | 18 | @property (nonatomic, retain) IBOutlet UIWindow *window; 19 | @property (nonatomic, retain) IBOutlet KTTextView_SampleViewController *viewController; 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /KTTextView_Sample-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | 30 | 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010 White Peak Software Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /Classes/KTTextView_SampleViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // KTTextView_SampleViewController.m 3 | // KTTextView-Sample 4 | // 5 | // Created by Kirby Turner on 12/8/10. 6 | // Copyright 2010 White Peak Software Inc. All rights reserved. 7 | // 8 | 9 | #import "KTTextView_SampleViewController.h" 10 | #import "KTTextView.h" 11 | 12 | @implementation KTTextView_SampleViewController 13 | 14 | @synthesize textView = _textView; 15 | 16 | - (void)dealloc 17 | { 18 | [_textView release], _textView = nil; 19 | [super dealloc]; 20 | } 21 | 22 | - (void)viewDidLoad 23 | { 24 | [super viewDidLoad]; 25 | 26 | [_textView setPlaceholderText:@"Touch to add text."]; 27 | } 28 | 29 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 30 | { 31 | return YES; 32 | } 33 | 34 | - (void)didReceiveMemoryWarning 35 | { 36 | // Releases the view if it doesn't have a superview. 37 | [super didReceiveMemoryWarning]; 38 | 39 | // Release any cached data, images, etc that aren't in use. 40 | } 41 | 42 | - (void)viewDidUnload 43 | { 44 | // Release any retained subviews of the main view. 45 | // e.g. self.myOutlet = nil; 46 | 47 | [self setTextView:nil]; 48 | } 49 | 50 | 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Classes/KTTextView.h: -------------------------------------------------------------------------------- 1 | // 2 | // KTTextView.h 3 | // 4 | // Created by Kirby Turner on 10/29/10. 5 | // Copyright 2010 White Peak Software Inc. All rights reserved. 6 | // 7 | // The MIT License 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | // 27 | 28 | #import 29 | 30 | 31 | @interface KTTextView : UITextView 32 | { 33 | UILabel *_placeholder; 34 | } 35 | 36 | @property (nonatomic, copy) NSString *placeholderText; 37 | @property (nonatomic, retain) UIColor *placeholderColor; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | KTTextView 2 | ========== 3 | 4 | KTTextView derives from UITextView enhancing it with new features. The only new feature at the moment is the **placeholderText** property. The **placeholderText** property works the same as UITextField's placeholder property. 5 | 6 | 7 | Using KTTextView 8 | ---------------- 9 | 10 | To use KTTextView, copy the files KTTextView.h and KTTextView.m to your project. Replace UITextView in your source code and NIB files with KTTextView. 11 | 12 | 13 | Properties 14 | ---------- 15 | 16 | **placeholderText** 17 | 18 | The string displayed when there is no other text in the text view. 19 | 20 | @property (nonatomic, copy) NSString *placeholderText; 21 | 22 | 23 | **placeholderColor** 24 | 25 | The color of the placeholder text. The default value is a light gray color. 26 | 27 | @property (nonatomic, retain) UIColor *placeholderColor; 28 | 29 | 30 | Screenshots 31 | ----------- 32 | 33 | [![](http://farm6.static.flickr.com/5049/5243475037_be5c5c998f_m.jpg)](http://farm6.static.flickr.com/5049/5243475037_be5c5c998f_b.jpg) 34 | 35 | 36 | Automatic Reference Counting (ARC) Support 37 | ========================================== 38 | 39 | If you would like to use KTTextView in your ARC-enabled project, you must [add the `-fno-objc-arc` compiler flag](http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project) to the file KTTextView.m. 40 | 41 | License 42 | ======= 43 | 44 | The MIT License 45 | 46 | Copyright (c) 2010 White Peak Software Inc 47 | 48 | Permission is hereby granted, free of charge, to any person obtaining a copy 49 | of this software and associated documentation files (the "Software"), to deal 50 | in the Software without restriction, including without limitation the rights 51 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 52 | copies of the Software, and to permit persons to whom the Software is 53 | furnished to do so, subject to the following conditions: 54 | 55 | The above copyright notice and this permission notice shall be included in 56 | all copies or substantial portions of the Software. 57 | 58 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 59 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 60 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 61 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 62 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 63 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 64 | THE SOFTWARE. -------------------------------------------------------------------------------- /Classes/KTTextView_SampleAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // KTTextView_SampleAppDelegate.m 3 | // KTTextView-Sample 4 | // 5 | // Created by Kirby Turner on 12/8/10. 6 | // Copyright 2010 White Peak Software Inc. All rights reserved. 7 | // 8 | 9 | #import "KTTextView_SampleAppDelegate.h" 10 | #import "KTTextView_SampleViewController.h" 11 | 12 | @implementation KTTextView_SampleAppDelegate 13 | 14 | @synthesize window; 15 | @synthesize viewController; 16 | 17 | 18 | #pragma mark - 19 | #pragma mark Application lifecycle 20 | 21 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 22 | 23 | // Override point for customization after application launch. 24 | 25 | // Add the view controller's view to the window and display. 26 | [self.window addSubview:viewController.view]; 27 | [self.window makeKeyAndVisible]; 28 | 29 | return YES; 30 | } 31 | 32 | 33 | - (void)applicationWillResignActive:(UIApplication *)application { 34 | /* 35 | 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. 36 | 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. 37 | */ 38 | } 39 | 40 | 41 | - (void)applicationDidEnterBackground:(UIApplication *)application { 42 | /* 43 | 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. 44 | If your application supports background execution, called instead of applicationWillTerminate: when the user quits. 45 | */ 46 | } 47 | 48 | 49 | - (void)applicationWillEnterForeground:(UIApplication *)application { 50 | /* 51 | Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. 52 | */ 53 | } 54 | 55 | 56 | - (void)applicationDidBecomeActive:(UIApplication *)application { 57 | /* 58 | 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. 59 | */ 60 | } 61 | 62 | 63 | - (void)applicationWillTerminate:(UIApplication *)application { 64 | /* 65 | Called when the application is about to terminate. 66 | See also applicationDidEnterBackground:. 67 | */ 68 | } 69 | 70 | 71 | #pragma mark - 72 | #pragma mark Memory management 73 | 74 | - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 75 | /* 76 | Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. 77 | */ 78 | } 79 | 80 | 81 | - (void)dealloc { 82 | [viewController release]; 83 | [window release]; 84 | [super dealloc]; 85 | } 86 | 87 | 88 | @end 89 | -------------------------------------------------------------------------------- /Classes/KTTextView.m: -------------------------------------------------------------------------------- 1 | // 2 | // KTTextView.m 3 | // 4 | // Created by Kirby Turner on 10/29/10. 5 | // Copyright 2010 White Peak Software Inc. All rights reserved. 6 | // 7 | // The MIT License 8 | // 9 | // Permission is hereby granted, free of charge, to any person obtaining a copy 10 | // of this software and associated documentation files (the "Software"), to deal 11 | // in the Software without restriction, including without limitation the rights 12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | // copies of the Software, and to permit persons to whom the Software is 14 | // furnished to do so, subject to the following conditions: 15 | // 16 | // The above copyright notice and this permission notice shall be included in 17 | // all copies or substantial portions of the Software. 18 | // 19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | // THE SOFTWARE. 26 | // 27 | 28 | #import "KTTextView.h" 29 | 30 | @interface KTTextView () 31 | @property (nonatomic, retain) UILabel *placeholder; 32 | @end 33 | 34 | @implementation KTTextView 35 | 36 | //@synthesize placeholderText = _placeholderText; 37 | //@synthesize placeholderColor = _placeholderColor; 38 | @synthesize placeholder = _placeholder; 39 | 40 | - (void)dealloc 41 | { 42 | [[NSNotificationCenter defaultCenter] removeObserver:self]; 43 | 44 | [_placeholder release], _placeholder = nil; 45 | 46 | [super dealloc]; 47 | } 48 | 49 | - (void)setup 50 | { 51 | if ([self placeholder]) { 52 | [[self placeholder] removeFromSuperview]; 53 | [self setPlaceholder:nil]; 54 | } 55 | 56 | CGRect frame = CGRectMake(8, 8, self.bounds.size.width - 16, 0.0); 57 | UILabel *placeholder = [[UILabel alloc] initWithFrame:frame]; 58 | [placeholder setLineBreakMode:NSLineBreakByWordWrapping]; 59 | [placeholder setNumberOfLines:0]; 60 | [placeholder setBackgroundColor:[UIColor clearColor]]; 61 | [placeholder setAlpha:1.0]; 62 | [placeholder setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 63 | [placeholder setTextColor:[UIColor lightGrayColor]]; 64 | [placeholder setText:@""]; 65 | [self addSubview:placeholder]; 66 | [self sendSubviewToBack:placeholder]; 67 | 68 | [self setPlaceholder:placeholder]; 69 | [placeholder release]; 70 | 71 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification object:nil]; 72 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getFocus:) name:UITextViewTextDidBeginEditingNotification object:nil]; 73 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(lostFocus:) name:UITextViewTextDidEndEditingNotification object:nil]; 74 | } 75 | 76 | - (void)awakeFromNib 77 | { 78 | [super awakeFromNib]; 79 | [self setup]; 80 | } 81 | 82 | - (id)initWithCoder:(NSCoder *)aDecoder 83 | { 84 | self = [super initWithCoder:aDecoder]; 85 | if (self) { 86 | [self setup]; 87 | } 88 | return self; 89 | } 90 | 91 | - (id)initWithFrame:(CGRect)frame 92 | { 93 | self = [super initWithFrame:frame]; 94 | if (self) { 95 | [self setup]; 96 | } 97 | return self; 98 | } 99 | 100 | - (void)textChanged:(NSNotification *)notification 101 | { 102 | if ([[_placeholder text] length] == 0) { 103 | return; 104 | } 105 | 106 | if ([[self text] length] == 0) { 107 | [_placeholder setAlpha:1.0]; 108 | } else { 109 | [_placeholder setAlpha:0.0]; 110 | } 111 | } 112 | 113 | - (void)getFocus:(NSNotification *)notification 114 | { 115 | [_placeholder setAlpha:0.0]; 116 | } 117 | 118 | - (void)lostFocus:(NSNotification *)notification 119 | { 120 | if ([[self text] length] == 0) { 121 | [_placeholder setAlpha:1.0]; 122 | } else { 123 | [_placeholder setAlpha:0.0]; 124 | } 125 | } 126 | 127 | - (void)drawRect:(CGRect)rect 128 | { 129 | [super drawRect:rect]; 130 | if ([[self text] length] == 0 && [[_placeholder text] length] > 0) { 131 | [_placeholder setAlpha:1.0]; 132 | } else { 133 | [_placeholder setAlpha:0.0]; 134 | } 135 | } 136 | 137 | - (void)setFont:(UIFont *)font 138 | { 139 | [super setFont:font]; 140 | [_placeholder setFont:font]; 141 | } 142 | 143 | - (NSString *)placeholderText 144 | { 145 | return [_placeholder text]; 146 | } 147 | 148 | - (void)setPlaceholderText:(NSString *)placeholderText 149 | { 150 | [_placeholder setText:placeholderText]; 151 | 152 | CGRect frame = _placeholder.frame; 153 | CGSize constraint = CGSizeMake(frame.size.width, 42.0f); 154 | NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 155 | paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 156 | paragraphStyle.alignment = NSTextAlignmentLeft; 157 | 158 | NSDictionary *attributes = @{NSFontAttributeName : self.font, 159 | NSParagraphStyleAttributeName : paragraphStyle}; 160 | CGRect size = [placeholderText boundingRectWithSize:constraint options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil]; 161 | 162 | frame.size.height = size.size.height; 163 | [_placeholder setFrame:frame]; 164 | } 165 | 166 | - (UIColor *)placeholderColor 167 | { 168 | return [_placeholder textColor]; 169 | } 170 | 171 | - (void)setPlaceholderColor:(UIColor *)placeholderColor 172 | { 173 | [_placeholder setTextColor:placeholderColor]; 174 | } 175 | 176 | @end 177 | -------------------------------------------------------------------------------- /KTTextView-Sample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1D3623260D0F684500981E51 /* KTTextView_SampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* KTTextView_SampleAppDelegate.m */; }; 11 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 12 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 13 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 14 | 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; 15 | 2899E5220DE3E06400AC0155 /* KTTextView_SampleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* KTTextView_SampleViewController.xib */; }; 16 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 17 | 28D7ACF80DDB3853001CB0EB /* KTTextView_SampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* KTTextView_SampleViewController.m */; }; 18 | 4CF9BD721A73F56A0022C380 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4CF9BD711A73F56A0022C380 /* Default-568h@2x.png */; }; 19 | 68F68E8612AFC80F002F32EE /* KTTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 68F68E8512AFC80F002F32EE /* KTTextView.m */; }; 20 | 68F68EA712AFCB69002F32EE /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 68F68EA512AFCB69002F32EE /* LICENSE */; }; 21 | 68F68EA812AFCB69002F32EE /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 68F68EA612AFCB69002F32EE /* README.md */; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXFileReference section */ 25 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 26 | 1D3623240D0F684500981E51 /* KTTextView_SampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KTTextView_SampleAppDelegate.h; sourceTree = ""; }; 27 | 1D3623250D0F684500981E51 /* KTTextView_SampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KTTextView_SampleAppDelegate.m; sourceTree = ""; }; 28 | 1D6058910D05DD3D006BFB54 /* KTTextView-Sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "KTTextView-Sample.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 29 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 30 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 31 | 2899E5210DE3E06400AC0155 /* KTTextView_SampleViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KTTextView_SampleViewController.xib; sourceTree = ""; }; 32 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 33 | 28D7ACF60DDB3853001CB0EB /* KTTextView_SampleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KTTextView_SampleViewController.h; sourceTree = ""; }; 34 | 28D7ACF70DDB3853001CB0EB /* KTTextView_SampleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KTTextView_SampleViewController.m; sourceTree = ""; }; 35 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 36 | 32CA4F630368D1EE00C91783 /* KTTextView_Sample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KTTextView_Sample_Prefix.pch; sourceTree = ""; }; 37 | 4CF9BD711A73F56A0022C380 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; 38 | 68F68E8412AFC80F002F32EE /* KTTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KTTextView.h; sourceTree = ""; }; 39 | 68F68E8512AFC80F002F32EE /* KTTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KTTextView.m; sourceTree = ""; }; 40 | 68F68EA512AFCB69002F32EE /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 41 | 68F68EA612AFCB69002F32EE /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = ""; }; 42 | 8D1107310486CEB800E47090 /* KTTextView_Sample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "KTTextView_Sample-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; 43 | /* End PBXFileReference section */ 44 | 45 | /* Begin PBXFrameworksBuildPhase section */ 46 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { 47 | isa = PBXFrameworksBuildPhase; 48 | buildActionMask = 2147483647; 49 | files = ( 50 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 51 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 52 | 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, 53 | ); 54 | runOnlyForDeploymentPostprocessing = 0; 55 | }; 56 | /* End PBXFrameworksBuildPhase section */ 57 | 58 | /* Begin PBXGroup section */ 59 | 080E96DDFE201D6D7F000001 /* Classes */ = { 60 | isa = PBXGroup; 61 | children = ( 62 | 68F68E8412AFC80F002F32EE /* KTTextView.h */, 63 | 68F68E8512AFC80F002F32EE /* KTTextView.m */, 64 | 1D3623240D0F684500981E51 /* KTTextView_SampleAppDelegate.h */, 65 | 1D3623250D0F684500981E51 /* KTTextView_SampleAppDelegate.m */, 66 | 28D7ACF60DDB3853001CB0EB /* KTTextView_SampleViewController.h */, 67 | 28D7ACF70DDB3853001CB0EB /* KTTextView_SampleViewController.m */, 68 | ); 69 | path = Classes; 70 | sourceTree = ""; 71 | }; 72 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 1D6058910D05DD3D006BFB54 /* KTTextView-Sample.app */, 76 | ); 77 | name = Products; 78 | sourceTree = ""; 79 | }; 80 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | 4CF9BD711A73F56A0022C380 /* Default-568h@2x.png */, 84 | 68F68EA512AFCB69002F32EE /* LICENSE */, 85 | 68F68EA612AFCB69002F32EE /* README.md */, 86 | 080E96DDFE201D6D7F000001 /* Classes */, 87 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 88 | 29B97317FDCFA39411CA2CEA /* Resources */, 89 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 90 | 19C28FACFE9D520D11CA2CBB /* Products */, 91 | ); 92 | name = CustomTemplate; 93 | sourceTree = ""; 94 | }; 95 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | 32CA4F630368D1EE00C91783 /* KTTextView_Sample_Prefix.pch */, 99 | 29B97316FDCFA39411CA2CEA /* main.m */, 100 | ); 101 | name = "Other Sources"; 102 | sourceTree = ""; 103 | }; 104 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 2899E5210DE3E06400AC0155 /* KTTextView_SampleViewController.xib */, 108 | 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 109 | 8D1107310486CEB800E47090 /* KTTextView_Sample-Info.plist */, 110 | ); 111 | name = Resources; 112 | sourceTree = ""; 113 | }; 114 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 118 | 1D30AB110D05D00D00671497 /* Foundation.framework */, 119 | 288765A40DF7441C002DB57D /* CoreGraphics.framework */, 120 | ); 121 | name = Frameworks; 122 | sourceTree = ""; 123 | }; 124 | /* End PBXGroup section */ 125 | 126 | /* Begin PBXNativeTarget section */ 127 | 1D6058900D05DD3D006BFB54 /* KTTextView-Sample */ = { 128 | isa = PBXNativeTarget; 129 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "KTTextView-Sample" */; 130 | buildPhases = ( 131 | 1D60588D0D05DD3D006BFB54 /* Resources */, 132 | 1D60588E0D05DD3D006BFB54 /* Sources */, 133 | 1D60588F0D05DD3D006BFB54 /* Frameworks */, 134 | ); 135 | buildRules = ( 136 | ); 137 | dependencies = ( 138 | ); 139 | name = "KTTextView-Sample"; 140 | productName = "KTTextView-Sample"; 141 | productReference = 1D6058910D05DD3D006BFB54 /* KTTextView-Sample.app */; 142 | productType = "com.apple.product-type.application"; 143 | }; 144 | /* End PBXNativeTarget section */ 145 | 146 | /* Begin PBXProject section */ 147 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 148 | isa = PBXProject; 149 | attributes = { 150 | LastUpgradeCheck = 0610; 151 | ORGANIZATIONNAME = "White Peak Software Inc"; 152 | }; 153 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "KTTextView-Sample" */; 154 | compatibilityVersion = "Xcode 3.2"; 155 | developmentRegion = English; 156 | hasScannedForEncodings = 1; 157 | knownRegions = ( 158 | English, 159 | Japanese, 160 | French, 161 | German, 162 | ); 163 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; 164 | projectDirPath = ""; 165 | projectRoot = ""; 166 | targets = ( 167 | 1D6058900D05DD3D006BFB54 /* KTTextView-Sample */, 168 | ); 169 | }; 170 | /* End PBXProject section */ 171 | 172 | /* Begin PBXResourcesBuildPhase section */ 173 | 1D60588D0D05DD3D006BFB54 /* Resources */ = { 174 | isa = PBXResourcesBuildPhase; 175 | buildActionMask = 2147483647; 176 | files = ( 177 | 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, 178 | 2899E5220DE3E06400AC0155 /* KTTextView_SampleViewController.xib in Resources */, 179 | 68F68EA712AFCB69002F32EE /* LICENSE in Resources */, 180 | 4CF9BD721A73F56A0022C380 /* Default-568h@2x.png in Resources */, 181 | 68F68EA812AFCB69002F32EE /* README.md in Resources */, 182 | ); 183 | runOnlyForDeploymentPostprocessing = 0; 184 | }; 185 | /* End PBXResourcesBuildPhase section */ 186 | 187 | /* Begin PBXSourcesBuildPhase section */ 188 | 1D60588E0D05DD3D006BFB54 /* Sources */ = { 189 | isa = PBXSourcesBuildPhase; 190 | buildActionMask = 2147483647; 191 | files = ( 192 | 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 193 | 1D3623260D0F684500981E51 /* KTTextView_SampleAppDelegate.m in Sources */, 194 | 28D7ACF80DDB3853001CB0EB /* KTTextView_SampleViewController.m in Sources */, 195 | 68F68E8612AFC80F002F32EE /* KTTextView.m in Sources */, 196 | ); 197 | runOnlyForDeploymentPostprocessing = 0; 198 | }; 199 | /* End PBXSourcesBuildPhase section */ 200 | 201 | /* Begin XCBuildConfiguration section */ 202 | 1D6058940D05DD3E006BFB54 /* Debug */ = { 203 | isa = XCBuildConfiguration; 204 | buildSettings = { 205 | ALWAYS_SEARCH_USER_PATHS = NO; 206 | COPY_PHASE_STRIP = NO; 207 | GCC_DYNAMIC_NO_PIC = NO; 208 | GCC_OPTIMIZATION_LEVEL = 0; 209 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 210 | GCC_PREFIX_HEADER = KTTextView_Sample_Prefix.pch; 211 | INFOPLIST_FILE = "KTTextView_Sample-Info.plist"; 212 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 213 | LD_NO_PIE = YES; 214 | PRODUCT_NAME = "KTTextView-Sample"; 215 | TARGETED_DEVICE_FAMILY = "1,2"; 216 | }; 217 | name = Debug; 218 | }; 219 | 1D6058950D05DD3E006BFB54 /* Release */ = { 220 | isa = XCBuildConfiguration; 221 | buildSettings = { 222 | ALWAYS_SEARCH_USER_PATHS = NO; 223 | COPY_PHASE_STRIP = YES; 224 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 225 | GCC_PREFIX_HEADER = KTTextView_Sample_Prefix.pch; 226 | INFOPLIST_FILE = "KTTextView_Sample-Info.plist"; 227 | IPHONEOS_DEPLOYMENT_TARGET = 6.0; 228 | LD_NO_PIE = YES; 229 | PRODUCT_NAME = "KTTextView-Sample"; 230 | TARGETED_DEVICE_FAMILY = "1,2"; 231 | VALIDATE_PRODUCT = YES; 232 | }; 233 | name = Release; 234 | }; 235 | C01FCF4F08A954540054247B /* Debug */ = { 236 | isa = XCBuildConfiguration; 237 | buildSettings = { 238 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 239 | GCC_C_LANGUAGE_STANDARD = c99; 240 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 241 | GCC_WARN_UNUSED_VARIABLE = YES; 242 | LD_NO_PIE = YES; 243 | ONLY_ACTIVE_ARCH = YES; 244 | SDKROOT = iphoneos; 245 | }; 246 | name = Debug; 247 | }; 248 | C01FCF5008A954540054247B /* Release */ = { 249 | isa = XCBuildConfiguration; 250 | buildSettings = { 251 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 252 | GCC_C_LANGUAGE_STANDARD = c99; 253 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 254 | GCC_WARN_UNUSED_VARIABLE = YES; 255 | LD_NO_PIE = YES; 256 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 257 | SDKROOT = iphoneos; 258 | }; 259 | name = Release; 260 | }; 261 | /* End XCBuildConfiguration section */ 262 | 263 | /* Begin XCConfigurationList section */ 264 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "KTTextView-Sample" */ = { 265 | isa = XCConfigurationList; 266 | buildConfigurations = ( 267 | 1D6058940D05DD3E006BFB54 /* Debug */, 268 | 1D6058950D05DD3E006BFB54 /* Release */, 269 | ); 270 | defaultConfigurationIsVisible = 0; 271 | defaultConfigurationName = Release; 272 | }; 273 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "KTTextView-Sample" */ = { 274 | isa = XCConfigurationList; 275 | buildConfigurations = ( 276 | C01FCF4F08A954540054247B /* Debug */, 277 | C01FCF5008A954540054247B /* Release */, 278 | ); 279 | defaultConfigurationIsVisible = 0; 280 | defaultConfigurationName = Release; 281 | }; 282 | /* End XCConfigurationList section */ 283 | }; 284 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 285 | } 286 | -------------------------------------------------------------------------------- /KTTextView_SampleViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10H574 6 | 823 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 132 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | 42 | 274 43 | 44 | YES 45 | 46 | 47 | 274 48 | {320, 460} 49 | 50 | 51 | 1 52 | MSAxIDEAA 53 | 54 | YES 55 | YES 56 | IBCocoaTouchFramework 57 | 58 | 59 | 2 60 | IBCocoaTouchFramework 61 | 62 | 63 | 64 | {320, 460} 65 | 66 | 67 | 3 68 | MC43NQA 69 | 70 | 2 71 | 72 | 73 | NO 74 | 75 | IBCocoaTouchFramework 76 | 77 | 78 | 79 | 80 | YES 81 | 82 | 83 | view 84 | 85 | 86 | 87 | 7 88 | 89 | 90 | 91 | textView 92 | 93 | 94 | 95 | 9 96 | 97 | 98 | 99 | 100 | YES 101 | 102 | 0 103 | 104 | 105 | 106 | 107 | 108 | -1 109 | 110 | 111 | File's Owner 112 | 113 | 114 | -2 115 | 116 | 117 | 118 | 119 | 6 120 | 121 | 122 | YES 123 | 124 | 125 | 126 | 127 | 128 | 8 129 | 130 | 131 | 132 | 133 | 134 | 135 | YES 136 | 137 | YES 138 | -1.CustomClassName 139 | -2.CustomClassName 140 | 6.IBEditorWindowLastContentRect 141 | 6.IBPluginDependency 142 | 8.CustomClassName 143 | 8.IBPluginDependency 144 | 145 | 146 | YES 147 | KTTextView_SampleViewController 148 | UIResponder 149 | {{239, 376}, {320, 480}} 150 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 151 | KTTextView 152 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 153 | 154 | 155 | 156 | YES 157 | 158 | 159 | YES 160 | 161 | 162 | 163 | 164 | YES 165 | 166 | 167 | YES 168 | 169 | 170 | 171 | 9 172 | 173 | 174 | 175 | YES 176 | 177 | KTTextView 178 | UITextView 179 | 180 | IBProjectSource 181 | Classes/KTTextView.h 182 | 183 | 184 | 185 | KTTextView_SampleViewController 186 | UIViewController 187 | 188 | textView 189 | KTTextView 190 | 191 | 192 | textView 193 | 194 | textView 195 | KTTextView 196 | 197 | 198 | 199 | IBProjectSource 200 | Classes/KTTextView_SampleViewController.h 201 | 202 | 203 | 204 | 205 | YES 206 | 207 | NSObject 208 | 209 | IBFrameworkSource 210 | Foundation.framework/Headers/NSError.h 211 | 212 | 213 | 214 | NSObject 215 | 216 | IBFrameworkSource 217 | Foundation.framework/Headers/NSFileManager.h 218 | 219 | 220 | 221 | NSObject 222 | 223 | IBFrameworkSource 224 | Foundation.framework/Headers/NSKeyValueCoding.h 225 | 226 | 227 | 228 | NSObject 229 | 230 | IBFrameworkSource 231 | Foundation.framework/Headers/NSKeyValueObserving.h 232 | 233 | 234 | 235 | NSObject 236 | 237 | IBFrameworkSource 238 | Foundation.framework/Headers/NSKeyedArchiver.h 239 | 240 | 241 | 242 | NSObject 243 | 244 | IBFrameworkSource 245 | Foundation.framework/Headers/NSObject.h 246 | 247 | 248 | 249 | NSObject 250 | 251 | IBFrameworkSource 252 | Foundation.framework/Headers/NSRunLoop.h 253 | 254 | 255 | 256 | NSObject 257 | 258 | IBFrameworkSource 259 | Foundation.framework/Headers/NSThread.h 260 | 261 | 262 | 263 | NSObject 264 | 265 | IBFrameworkSource 266 | Foundation.framework/Headers/NSURL.h 267 | 268 | 269 | 270 | NSObject 271 | 272 | IBFrameworkSource 273 | Foundation.framework/Headers/NSURLConnection.h 274 | 275 | 276 | 277 | NSObject 278 | 279 | IBFrameworkSource 280 | UIKit.framework/Headers/UIAccessibility.h 281 | 282 | 283 | 284 | NSObject 285 | 286 | IBFrameworkSource 287 | UIKit.framework/Headers/UINibLoading.h 288 | 289 | 290 | 291 | NSObject 292 | 293 | IBFrameworkSource 294 | UIKit.framework/Headers/UIResponder.h 295 | 296 | 297 | 298 | UIResponder 299 | NSObject 300 | 301 | 302 | 303 | UIScrollView 304 | UIView 305 | 306 | IBFrameworkSource 307 | UIKit.framework/Headers/UIScrollView.h 308 | 309 | 310 | 311 | UISearchBar 312 | UIView 313 | 314 | IBFrameworkSource 315 | UIKit.framework/Headers/UISearchBar.h 316 | 317 | 318 | 319 | UISearchDisplayController 320 | NSObject 321 | 322 | IBFrameworkSource 323 | UIKit.framework/Headers/UISearchDisplayController.h 324 | 325 | 326 | 327 | UITextView 328 | UIScrollView 329 | 330 | IBFrameworkSource 331 | UIKit.framework/Headers/UITextView.h 332 | 333 | 334 | 335 | UIView 336 | 337 | IBFrameworkSource 338 | UIKit.framework/Headers/UIPrintFormatter.h 339 | 340 | 341 | 342 | UIView 343 | 344 | IBFrameworkSource 345 | UIKit.framework/Headers/UITextField.h 346 | 347 | 348 | 349 | UIView 350 | UIResponder 351 | 352 | IBFrameworkSource 353 | UIKit.framework/Headers/UIView.h 354 | 355 | 356 | 357 | UIViewController 358 | 359 | IBFrameworkSource 360 | UIKit.framework/Headers/UINavigationController.h 361 | 362 | 363 | 364 | UIViewController 365 | 366 | IBFrameworkSource 367 | UIKit.framework/Headers/UIPopoverController.h 368 | 369 | 370 | 371 | UIViewController 372 | 373 | IBFrameworkSource 374 | UIKit.framework/Headers/UISplitViewController.h 375 | 376 | 377 | 378 | UIViewController 379 | 380 | IBFrameworkSource 381 | UIKit.framework/Headers/UITabBarController.h 382 | 383 | 384 | 385 | UIViewController 386 | UIResponder 387 | 388 | IBFrameworkSource 389 | UIKit.framework/Headers/UIViewController.h 390 | 391 | 392 | 393 | 394 | 0 395 | IBCocoaTouchFramework 396 | 397 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 398 | 399 | 400 | 401 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 402 | 403 | 404 | YES 405 | KTTextView-Sample.xcodeproj 406 | 3 407 | 132 408 | 409 | 410 | -------------------------------------------------------------------------------- /MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1024 5 | 10D571 6 | 786 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 112 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | KTTextView_SampleViewController 45 | 46 | 47 | 1 48 | 49 | IBCocoaTouchFramework 50 | NO 51 | 52 | 53 | 54 | 292 55 | {320, 480} 56 | 57 | 1 58 | MSAxIDEAA 59 | 60 | NO 61 | NO 62 | 63 | IBCocoaTouchFramework 64 | YES 65 | 66 | 67 | 68 | 69 | YES 70 | 71 | 72 | delegate 73 | 74 | 75 | 76 | 4 77 | 78 | 79 | 80 | viewController 81 | 82 | 83 | 84 | 11 85 | 86 | 87 | 88 | window 89 | 90 | 91 | 92 | 14 93 | 94 | 95 | 96 | 97 | YES 98 | 99 | 0 100 | 101 | 102 | 103 | 104 | 105 | -1 106 | 107 | 108 | File's Owner 109 | 110 | 111 | 3 112 | 113 | 114 | KTTextView_Sample App Delegate 115 | 116 | 117 | -2 118 | 119 | 120 | 121 | 122 | 10 123 | 124 | 125 | 126 | 127 | 12 128 | 129 | 130 | 131 | 132 | 133 | 134 | YES 135 | 136 | YES 137 | -1.CustomClassName 138 | -2.CustomClassName 139 | 10.CustomClassName 140 | 10.IBEditorWindowLastContentRect 141 | 10.IBPluginDependency 142 | 12.IBEditorWindowLastContentRect 143 | 12.IBPluginDependency 144 | 3.CustomClassName 145 | 3.IBPluginDependency 146 | 147 | 148 | YES 149 | UIApplication 150 | UIResponder 151 | KTTextView_SampleViewController 152 | {{234, 376}, {320, 480}} 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | {{525, 346}, {320, 480}} 155 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 156 | KTTextView_SampleAppDelegate 157 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 158 | 159 | 160 | 161 | YES 162 | 163 | 164 | YES 165 | 166 | 167 | 168 | 169 | YES 170 | 171 | 172 | YES 173 | 174 | 175 | 176 | 15 177 | 178 | 179 | 180 | YES 181 | 182 | UIWindow 183 | UIView 184 | 185 | IBUserSource 186 | 187 | 188 | 189 | 190 | KTTextView_SampleAppDelegate 191 | NSObject 192 | 193 | YES 194 | 195 | YES 196 | viewController 197 | window 198 | 199 | 200 | YES 201 | KTTextView_SampleViewController 202 | UIWindow 203 | 204 | 205 | 206 | YES 207 | 208 | YES 209 | viewController 210 | window 211 | 212 | 213 | YES 214 | 215 | viewController 216 | KTTextView_SampleViewController 217 | 218 | 219 | window 220 | UIWindow 221 | 222 | 223 | 224 | 225 | IBProjectSource 226 | Classes/KTTextView_SampleAppDelegate.h 227 | 228 | 229 | 230 | KTTextView_SampleAppDelegate 231 | NSObject 232 | 233 | IBUserSource 234 | 235 | 236 | 237 | 238 | KTTextView_SampleViewController 239 | UIViewController 240 | 241 | IBProjectSource 242 | Classes/KTTextView_SampleViewController.h 243 | 244 | 245 | 246 | 247 | YES 248 | 249 | NSObject 250 | 251 | IBFrameworkSource 252 | Foundation.framework/Headers/NSError.h 253 | 254 | 255 | 256 | NSObject 257 | 258 | IBFrameworkSource 259 | Foundation.framework/Headers/NSFileManager.h 260 | 261 | 262 | 263 | NSObject 264 | 265 | IBFrameworkSource 266 | Foundation.framework/Headers/NSKeyValueCoding.h 267 | 268 | 269 | 270 | NSObject 271 | 272 | IBFrameworkSource 273 | Foundation.framework/Headers/NSKeyValueObserving.h 274 | 275 | 276 | 277 | NSObject 278 | 279 | IBFrameworkSource 280 | Foundation.framework/Headers/NSKeyedArchiver.h 281 | 282 | 283 | 284 | NSObject 285 | 286 | IBFrameworkSource 287 | Foundation.framework/Headers/NSObject.h 288 | 289 | 290 | 291 | NSObject 292 | 293 | IBFrameworkSource 294 | Foundation.framework/Headers/NSRunLoop.h 295 | 296 | 297 | 298 | NSObject 299 | 300 | IBFrameworkSource 301 | Foundation.framework/Headers/NSThread.h 302 | 303 | 304 | 305 | NSObject 306 | 307 | IBFrameworkSource 308 | Foundation.framework/Headers/NSURL.h 309 | 310 | 311 | 312 | NSObject 313 | 314 | IBFrameworkSource 315 | Foundation.framework/Headers/NSURLConnection.h 316 | 317 | 318 | 319 | NSObject 320 | 321 | IBFrameworkSource 322 | UIKit.framework/Headers/UIAccessibility.h 323 | 324 | 325 | 326 | NSObject 327 | 328 | IBFrameworkSource 329 | UIKit.framework/Headers/UINibLoading.h 330 | 331 | 332 | 333 | NSObject 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UIResponder.h 337 | 338 | 339 | 340 | UIApplication 341 | UIResponder 342 | 343 | IBFrameworkSource 344 | UIKit.framework/Headers/UIApplication.h 345 | 346 | 347 | 348 | UIResponder 349 | NSObject 350 | 351 | 352 | 353 | UISearchBar 354 | UIView 355 | 356 | IBFrameworkSource 357 | UIKit.framework/Headers/UISearchBar.h 358 | 359 | 360 | 361 | UISearchDisplayController 362 | NSObject 363 | 364 | IBFrameworkSource 365 | UIKit.framework/Headers/UISearchDisplayController.h 366 | 367 | 368 | 369 | UIView 370 | 371 | IBFrameworkSource 372 | UIKit.framework/Headers/UITextField.h 373 | 374 | 375 | 376 | UIView 377 | UIResponder 378 | 379 | IBFrameworkSource 380 | UIKit.framework/Headers/UIView.h 381 | 382 | 383 | 384 | UIViewController 385 | 386 | IBFrameworkSource 387 | UIKit.framework/Headers/UINavigationController.h 388 | 389 | 390 | 391 | UIViewController 392 | 393 | IBFrameworkSource 394 | UIKit.framework/Headers/UIPopoverController.h 395 | 396 | 397 | 398 | UIViewController 399 | 400 | IBFrameworkSource 401 | UIKit.framework/Headers/UISplitViewController.h 402 | 403 | 404 | 405 | UIViewController 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UITabBarController.h 409 | 410 | 411 | 412 | UIViewController 413 | UIResponder 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIViewController.h 417 | 418 | 419 | 420 | UIWindow 421 | UIView 422 | 423 | IBFrameworkSource 424 | UIKit.framework/Headers/UIWindow.h 425 | 426 | 427 | 428 | 429 | 0 430 | IBCocoaTouchFramework 431 | 432 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 433 | 434 | 435 | 436 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 437 | 438 | 439 | YES 440 | KTTextView-Sample.xcodeproj 441 | 3 442 | 112 443 | 444 | 445 | --------------------------------------------------------------------------------