`
zjjzmw1
  • 浏览: 1367850 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

TextView添加placeholder属性

    博客分类:
  • iOS
阅读更多

@interface SSTextView : UITextView  {

    BOOL _shouldDrawPlaceholder;

}

 

 

/**

 The string that is displayed when there is no other text in the text view.

 

 The default value is `nil`.

 */

@property (nonatomic) NSString *placeholder;

 

/**

 The color of the placeholder.

 

 The default is `[UIColor lightGrayColor]`.

 */

@property (nonatomic) UIColor *placeholderColor;

 

 

@end

 

 

 

 

#import "SSTextView.h"

 

@interfaceSSTextView ()

- (void)_initialize;

- (void)_updateShouldDrawPlaceholder;

- (void)_textChanged:(NSNotification *)notification;

@end

 

 

@implementation SSTextView

 

#pragma mark - Accessors

 

@synthesize placeholder = _placeholder;

@synthesize placeholderColor = _placeholderColor;

 

- (void)setText:(NSString *)string {

    [super setText:string];

    [self_updateShouldDrawPlaceholder];

}

 

 

- (void)setPlaceholder:(NSString *)string {

    if ([string isEqual:_placeholder]) {

        return;

    }

    

    _placeholder = string;

    

    [self_updateShouldDrawPlaceholder];

}

 

 

#pragma mark - NSObject

 

- (void)dealloc {

    [[NSNotificationCenterdefaultCenter] removeObserver:selfname:UITextViewTextDidChangeNotificationobject:self];

    

}

 

 

#pragma mark - UIView

 

- (id)initWithCoder:(NSCoder *)aDecoder {

    if ((self = [super initWithCoder:aDecoder])) {

        [self _initialize];

    }

    returnself;

}

 

 

- (id)initWithFrame:(CGRect)frame {

    if ((self = [super initWithFrame:frame])) {

        [self _initialize];

    }

    returnself;

}

 

 

- (void)drawRect:(CGRect)rect {

    [super drawRect:rect];

    

 - (void)drawRect:(CGRect)rect {

    [super drawRect:rect];

    

    if (_shouldDrawPlaceholder) {

        [_placeholderColorset];

        

        [_placeholderdrawInRect:CGRectMake(8.0f, 5.0f, self.frame.size.width - 16.0f, self.frame.size.height - 16.0f) withAttributes:[NSDictionarydictionaryWithObject:self.placeholderColorforKey:NSForegroundColorAttributeName]];

        

    }

}

}

 

 

#pragma mark - Private

 

- (void)_initialize {

    [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(_textChanged:) name:UITextViewTextDidChangeNotificationobject:self];

    

    self.placeholderColor = [UIColorcolorWithWhite:0.702falpha:1.0f];

    _shouldDrawPlaceholder = NO;

}

 

 

- (void)_updateShouldDrawPlaceholder {

    BOOL prev = _shouldDrawPlaceholder;

    _shouldDrawPlaceholder = self.placeholder && self.placeholderColor && self.text.length == 0;

    

    if (prev != _shouldDrawPlaceholder) {

        [selfsetNeedsDisplay];

    }

}

 

 

- (void)_textChanged:(NSNotification *)notificaiton {

    [self_updateShouldDrawPlaceholder];    

}

 

 

@end

 

 

 

 

分享到:
评论

相关推荐

    ios-TextView~Placeholder.zip

    `ios-TextView~Placeholder.zip`这个压缩包很可能包含了一个示例项目或代码片段,展示了如何为`UITextView`添加自定义的`placeholder`功能。 首先,我们来理解一下`placeholder`的概念。在用户界面设计中,占位符文...

    ios-为TextView设置placeholder并且高度随文本多少进行自适应.zip

    - `CustomTextView` 添加了一个`UILabel` 来展示`placeholder`,这个`UILabel`通常会设置成半透明的颜色,以便在`TextView`空白时显示提示信息。 - 当`TextView`的文本内容为空时,`placeholder`显示;当用户开始...

    TextView增加placeHolder

    标题"TextView增加placeHolder"所指的就是如何在TextView中添加一个类似占位符的功能。这通常是通过以下两种方式实现的: 1. **继承TextView**: 创建一个新的自定义View类,继承自TextView,并在其中添加占位符的...

    TextView封装,包含placeholder,并且可以修改placehoder颜色

    在这个封装中,`TextView`被赋予了`placeholder`属性,用户可以设置提示文本,帮助用户了解输入框的预期输入内容。 3. **修改placeholder颜色**: - 在iOS的`UITextField`中,placeholder的颜色是可以自定义的,这...

    ios-带有placeholder的textview.zip

    当需要为`UITextView`添加类似于`UITextField`的占位符(placeholder)功能时,因为原生的`UITextView`并未提供直接的支持,开发者需要自定义实现。`ios-带有placeholder的textview.zip`中的项目"YMTextView-master...

    ios-TextView placeholder maxInputLenth.zip

    扩展TextView添加placeholder和maxInputLenth属性,将扩展文件导入即可使用对代码无污染 原理介绍:http://www.jianshu.com/p/b61cf49c1e24 github:...

    iOS可以显示placeholder的TextView

    在`PlaceholderTextView`中,我们可以定义一个`placeholder`属性,以及对应的`placeholderColor`属性,允许开发者设置占位符的颜色。这样,用户在初始化`PlaceholderTextView`时,可以像设置`UITextField`一样,通过...

    ios-一个带有placeholder 的可视化textview.zip

    在实际应用中,我们经常需要为TextView添加placeholder,就像文本框(TextField)那样,来提示用户输入信息。"ios-一个带有placeholder的可视化textview.zip"这个资源提供了一个实现TextView placeholder功能的示例...

    ios-带有placeholder的TextView.zip

    在压缩包中的`placeholderTextView`文件,很可能是自定义的`UITextView`子类,它添加了`placeholder`属性并实现了相关的显示逻辑。 懒加载(Lazy Loading)是一种优化技术,主要用在资源加载上,目的是推迟非关键...

    IOS应用源码之自动为textView添加编辑框.zip

    本资源"IOS应用源码之自动为textView添加编辑框.zip"提供了一种方法,帮助开发者自动为`textView`添加编辑框,提升用户交互体验。下面我们将深入探讨这一主题。 首先,`textView`是`UIKit`框架中的一个控件,全称为...

    ios-带placeholder的textView.zip

    本项目“ios-带placeholder的textView.zip”显然关注的是如何为TextView添加占位符(Placeholder)功能,这是iOS原生TextView所不直接支持的。通过分析提供的文件名CustomTextVeiw.h和CustomTextVeiw.m,我们可以...

    ios-最优雅的textView占位符与字数限制的解决方式.zip

    我们可以为TextView添加一个方法来监测输入字数,一旦超过设定值,就阻止进一步输入。例如: 1. 定义一个属性来存储最大字数限制,如`@property (nonatomic, assign) NSInteger maxCharacterCount;` 2. 添加一个...

    TextView添加提示语以及限制字符 iOS

    要为`TextView`添加`placeholder`,可以创建一个自定义的`UIView`子类,继承自`UITextView`,并添加一个新的属性来存储`placeholder`文字。然后,在`drawRect:`方法中根据`TextView`的文本内容是否为空,决定是否...

    UITextView增加PlaceHolder

    首先创建一个名为 `UITextView+PlaceHolder` 的Category,然后在这个Category中添加一个属性 `placeholder` 和相关的方法。 ```objc // UITextView+PlaceHolder.h #import @interface UITextView (PlaceHolder) ...

    TextView 的 placeHoder

    `TextView` 的 `placeHolder` 概念可能让人联想到HTML中的占位符,但在Android中,它并不直接对应一个特定的属性。不过,我们可以用一些技巧来实现类似的功能,即在 `TextView` 没有设定内容时显示一段提示文字,当...

    IOS应用源码——自动为textView添加编辑框.rar

    这个压缩包“IOS应用源码——自动为textView添加编辑框.rar”提供了一个解决方案,它可以帮助开发者为textView自定义一个编辑框,提升用户在输入文字时的交互体验。让我们深入探讨一下这个源码实现的关键知识点。 ...

    ios-带有占位符的TextView.zip

    在这个名为“ios-带有占位符的TextView.zip”的项目中,开发者提供了一个增强版的 `TextView`,它包含了占位符(placeholder)功能,用户可以对占位符的颜色和其他属性进行自定义,使其更加符合应用的设计需求和用户...

    iOS应用开发中使UITextField实现placeholder属性的方法

    - 添加一个专门的placeholder属性,用于设置和获取placeholder文本。 - 创建一个内部UILabel用于显示placeholder,根据文本内容的有无调整其显示和隐藏。 - 考虑到布局和样式,确保placeholder的样式与系统的...

    A missing placeholder for UITextView..zip

    "A missing placeholder for UITextView" 这个开源项目就是为了解决这个问题,它为 `UITextView` 添加了缺失的占位符支持。 该项目的核心在于创建了一个自定义的 `UITextView` 子类,可能被命名为 `...

Global site tag (gtag.js) - Google Analytics