From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.m | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 161 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.m b/screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.m new file mode 100644 index 0000000..0e6225c --- /dev/null +++ b/screendisplay/Pods/IQKeyboardManager/IQKeyboardManager/IQTextView/IQTextView.m @@ -0,0 +1,161 @@ +// +// IQTextView.m +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 "IQTextView.h" + +#import <UIKit/NSTextContainer.h> +#import <UIKit/UILabel.h> +#import <UIKit/UINibLoading.h> + +@interface IQTextView () + +@property(nonatomic, strong) UILabel *placeholderLabel; + +@end + +@implementation IQTextView + +@synthesize placeholder = _placeholder; +@synthesize placeholderLabel = _placeholderLabel; +@synthesize placeholderTextColor = _placeholderTextColor; + +-(void)initialize +{ + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshPlaceholder) name:UITextViewTextDidChangeNotification object:self]; +} + +-(void)dealloc +{ + [_placeholderLabel removeFromSuperview]; + _placeholderLabel = nil; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + [self initialize]; + } + return self; +} + +-(void)awakeFromNib +{ + [super awakeFromNib]; + [self initialize]; +} + +-(void)refreshPlaceholder +{ + if([[self text] length]) + { + [_placeholderLabel setAlpha:0]; + } + else + { + [_placeholderLabel setAlpha:1]; + } + + [self setNeedsLayout]; + [self layoutIfNeeded]; +} + +- (void)setText:(NSString *)text +{ + [super setText:text]; + [self refreshPlaceholder]; +} + +-(void)setFont:(UIFont *)font +{ + [super setFont:font]; + self.placeholderLabel.font = self.font; + + [self setNeedsLayout]; + [self layoutIfNeeded]; +} + +-(void)setTextAlignment:(NSTextAlignment)textAlignment +{ + [super setTextAlignment:textAlignment]; + self.placeholderLabel.textAlignment = textAlignment; + + [self setNeedsLayout]; + [self layoutIfNeeded]; +} + +-(void)layoutSubviews +{ + [super layoutSubviews]; + + CGFloat offsetLeft = self.textContainerInset.left + self.textContainer.lineFragmentPadding; + CGFloat offsetRight = self.textContainerInset.right + self.textContainer.lineFragmentPadding; + CGFloat offsetTop = self.textContainerInset.top; + CGFloat offsetBottom = self.textContainerInset.bottom; + + CGSize expectedSize = [self.placeholderLabel sizeThatFits:CGSizeMake(CGRectGetWidth(self.frame)-offsetLeft-offsetRight, CGRectGetHeight(self.frame)-offsetTop-offsetBottom)]; + self.placeholderLabel.frame = CGRectMake(offsetLeft, offsetTop, expectedSize.width, expectedSize.height); +} + +-(void)setPlaceholder:(NSString *)placeholder +{ + _placeholder = placeholder; + + self.placeholderLabel.text = placeholder; + [self refreshPlaceholder]; +} + +-(void)setPlaceholderTextColor:(UIColor*)placeholderTextColor +{ + _placeholderTextColor = placeholderTextColor; + self.placeholderLabel.textColor = placeholderTextColor; +} + +-(UILabel*)placeholderLabel +{ + if (_placeholderLabel == nil) + { + _placeholderLabel = [[UILabel alloc] init]; + _placeholderLabel.autoresizingMask = (UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight); + _placeholderLabel.lineBreakMode = NSLineBreakByWordWrapping; + _placeholderLabel.numberOfLines = 0; + _placeholderLabel.font = self.font; + _placeholderLabel.textAlignment = self.textAlignment; + _placeholderLabel.backgroundColor = [UIColor clearColor]; + _placeholderLabel.textColor = [UIColor colorWithWhite:0.7 alpha:1.0]; + _placeholderLabel.alpha = 0; + [self addSubview:_placeholderLabel]; + } + + return _placeholderLabel; +} + +//When any text changes on textField, the delegate getter is called. At this time we refresh the textView's placeholder +-(id<UITextViewDelegate>)delegate +{ + [self refreshPlaceholder]; + return [super delegate]; +} + +@end -- Gitblit v1.8.0