diff options
Diffstat (limited to 'Vendor/HPTextViewInternal.m')
| -rw-r--r-- | Vendor/HPTextViewInternal.m | 98 | 
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 | 
