aboutsummaryrefslogtreecommitdiffstats
path: root/Vendor/HPTextViewInternal.m
diff options
context:
space:
mode:
Diffstat (limited to 'Vendor/HPTextViewInternal.m')
-rw-r--r--Vendor/HPTextViewInternal.m98
1 files changed, 98 insertions, 0 deletions
diff --git a/Vendor/HPTextViewInternal.m b/Vendor/HPTextViewInternal.m
new file mode 100644
index 0000000..9b45702
--- /dev/null
+++ b/Vendor/HPTextViewInternal.m
@@ -0,0 +1,98 @@
+//
+// HPTextViewInternal.m
+//
+// Created by Hans Pinckaers on 29-06-10.
+//
+// MIT License
+//
+// Copyright (c) 2011 Hans Pinckaers
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#import "HPTextViewInternal.h"
+
+
+@implementation HPTextViewInternal
+
+-(void)setText:(NSString *)text
+{
+ BOOL originalValue = self.scrollEnabled;
+ //If one of GrowingTextView's superviews is a scrollView, and self.scrollEnabled == NO,
+ //setting the text programatically will cause UIKit to search upwards until it finds a scrollView with scrollEnabled==yes
+ //then scroll it erratically. Setting scrollEnabled temporarily to YES prevents this.
+ [self setScrollEnabled:YES];
+ [super setText:text];
+ [self setScrollEnabled:originalValue];
+}
+
+-(void)setContentOffset:(CGPoint)s
+{
+ if(self.tracking || self.decelerating){
+ //initiated by user...
+
+ UIEdgeInsets insets = self.contentInset;
+ insets.bottom = 0;
+ insets.top = 0;
+ self.contentInset = insets;
+
+ } else {
+
+ float bottomOffset = (self.contentSize.height - self.frame.size.height + self.contentInset.bottom);
+ if(s.y < bottomOffset && self.scrollEnabled){
+ UIEdgeInsets insets = self.contentInset;
+ insets.bottom = 8;
+ insets.top = 0;
+ self.contentInset = insets;
+ }
+ }
+
+ [super setContentOffset:s];
+}
+
+-(void)setContentInset:(UIEdgeInsets)s
+{
+ UIEdgeInsets insets = s;
+
+ if(s.bottom>8) insets.bottom = 0;
+ insets.top = 0;
+
+ [super setContentInset:insets];
+}
+
+-(void)setContentSize:(CGSize)contentSize
+{
+ // is this an iOS5 bug? Need testing!
+ if(self.contentSize.height > contentSize.height)
+ {
+ UIEdgeInsets insets = self.contentInset;
+ insets.bottom = 0;
+ insets.top = 0;
+ self.contentInset = insets;
+ }
+
+ [super setContentSize:contentSize];
+}
+
+
+- (void)dealloc {
+ [super dealloc];
+}
+
+
+@end