textView在使用中通常会有2个功能是最常用的

  1. 设置placeholder
  2. 限制输入长度

TYLimitedTextView刚好是为了解决这个2个问题而诞生的,下面讲解TYLimitedTextView的用法,有需要的可以参考(textField限制输入请参考我的文章iOS textField输入限制),demo下载地址:https://github.com/qqcc1388/TYLimitInputDemo

TYLimitedTextView能够快速实现功能

  1. placeholoder功能实现
  2. textview输入长度实时监听,控制
  3. 提供代理方法实现textview return事件回调

话不多说,上代码

#import <UIKit/UIKit.h>

@protocol TYLimitedTextViewDelegate <NSObject>

@optional

/**
textView 键盘return事件监听 @param textView textView
*/
-(BOOL)limitedTextViewShouldReturn:(UITextView *)textView; /**
textView内容改变实时监听 @param textView textView
*/
- (void)limitedTextViewDidChange:(UITextView *)textView; /**
textView end editing @param textView textView
*/
- (void)limitedTextViewDidEndEditing:(UITextView *)textView; @end @interface TYLimitedTextView : UITextView @property (nonatomic,weak) id <TYLimitedTextViewDelegate> realDelegate; /**
TYLimitedTextView允许输入的最大长度 默认 0不限制
*/
@property (nonatomic,assign) NSInteger maxLength; /**
输入内容长度
*/
@property (nonatomic,assign) NSInteger inputLength; @end
#import "TYLimitedTextView.h"

@interface TYLimitedTextView ()<UITextViewDelegate>

@end

@implementation TYLimitedTextView

-(instancetype)initWithFrame:(CGRect)frame{

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

        [self initialize];
}
return self;
} -(instancetype)initWithCoder:(NSCoder *)aDecoder{ if (self = [super initWithCoder:aDecoder]) { [self initialize];
}
return self;
} -(void)initialize{
//设置默认值
self.maxLength = 0; //设置基本属性
self.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];
self.font = [UIFont systemFontOfSize:14];
self.backgroundColor = [UIColor whiteColor]; //设置代理
self.delegate = self;
} #pragma mark - textViewDelegate
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ //如果用户点击了return
if([text isEqualToString:@"\n"]){
if (_realDelegate && [_realDelegate respondsToSelector:@selector(limitedTextViewShouldReturn:)]) {
return [_realDelegate limitedTextViewShouldReturn:textView];
}
return NO;
} //长度限制操作
NSString *str = [NSString stringWithFormat:@"%@%@", textView.text, text]; if (str.length > self.maxLength && self.maxLength){ NSRange rangeIndex = [str rangeOfComposedCharacterSequenceAtIndex:self.maxLength]; if (rangeIndex.length == 1){//字数超限
textView.text = [str substringToIndex:self.maxLength];
//记录输入的字数
self.inputLength = textView.text.length;
if (_realDelegate && [_realDelegate respondsToSelector:@selector(limitedTextViewDidChange:)]) {
[_realDelegate limitedTextViewDidChange:textView];
} }else{
NSRange rangeRange = [str rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, self.maxLength)];
textView.text = [str substringWithRange:rangeRange];
}
return NO;
}
return YES;
} - (void)textViewDidChange:(UITextView *)textView{ if (textView.text.length > self.maxLength && self.maxLength){
textView.text = [textView.text substringToIndex:self.maxLength];
}
//记录输入的字数
self.inputLength = textView.text.length; if (_realDelegate && [_realDelegate respondsToSelector:@selector(limitedTextViewDidChange:)]) {
[_realDelegate limitedTextViewDidChange:textView];
}
} - (void)textViewDidEndEditing:(UITextView *)textView{
if (_realDelegate && [_realDelegate respondsToSelector:@selector(limitedTextViewDidEndEditing:)]) {
[_realDelegate limitedTextViewDidEndEditing:textView];
}
}

关于textView实现placeholder功能,这里通过UITextView+Placeholder分类来实现具体代码见demo

使用方法:

    //设置允许输入的最大长度
self.textView.maxLength = 200; //设置代理方法
self.textView.realDelegate = self; self.textView.backgroundColor = [UIColor cyanColor]; //设置placeholder
self.textView.placeholder = @"请填写用户用户简介";

使用TYLimitedTextView一定要注意:TYLimitedTextView已经将系统的TextView部分代理方法拓展出来了,所有如果你需要使用TYLimitedTextView回调功能,请不要使用delegate而使用realDelegate,否则会出现冲突也就是self.delegate = self 的尴尬。如果拓展出来的方法不足以你使用,自己自行拓展。

转载请标注来源https://www.cnblogs.com/qqcc1388/p/7251946.html

iOS TextView输入长度限制 设置placeholder的更多相关文章

  1. 简单几步实现 IOS UITextField输入长度的控制

    在ios开发过程中,我们有时候需要对UITextField的输入长度进行控制,比如输入手机号码最大长度为11位等,而ios自身又不像android那样可以设置输入框的输入长度,接下来通过简单几步实现这 ...

  2. ios 限制输入长度

    ----------------UITextField限制输入的长度------------ - (BOOL)textField:(UITextField *)textField shouldChan ...

  3. iOS开发之UITextView,设置textView的行间距及placeholder

    一.设置textView的行间距 1.如果只是静态显示textView的内容为设置的行间距,执行如下代码: //    textview 改变字体的行间距     NSMutableParagraph ...

  4. iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)

    项目中各个地方都会用到TextField,textField的输入也会有各种需求,各种限制,每次用到的时候要重写一遍这些限制,导致各种垃圾代码,各种重复,有一天,我终于看不下去了,于是把textFie ...

  5. iOS 限制TextField输入长度(标准)

    iOS 限制TextField输入长度(标准) 网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入 ...

  6. iOS之限制TextField的输入长度

    网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入长度的方法.我所采用的并不是监听方法而是最不同的 ...

  7. iOS- UITextField限制输入长度

    限制输入长度的问题,在这里完美的解决了! //先创建一个textField 和 一个button. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  8. iOS UITextView 输入内容实时更新cell的高度

    iOS UITextView 输入内容实时更新cell的高度 2014-12-26 11:37 编辑: suiling 分类:iOS开发 来源:Vito Zhang'blog  11 4741 UIT ...

  9. 限制 UITextField 输入长度

    限制 UITextField 输入长度 标签(空格分隔): UITextField UITextField 是 iOS 中最经常使用的组件之中的一个.关于它也有各种各样的需求,这些需求是它本身没有提供 ...

随机推荐

  1. (转)导出EXCEL时科学计数法问题

    //1)  文本:vnd.ms-excel.numberformat:@ //2)  日期:vnd.ms-excel.numberformat:yyyy/mm/dd //3)  数字:vnd.ms-e ...

  2. 水平方向的RecyclerView

    最近做了一个项目需要实现一个卡片式的水平滑动,但是不能手势滑动,点击卡片上的按钮之后滑动到下一个卡片,所以想到用RecyclerView实现,去掉它的手势滑动,点击按钮之后再代码控制滑动到下一个卡片. ...

  3. PHP编译

    编译php-5.3.6的时候需要先打一个内存泄露的补丁,具体的操作如下 tar vzxf suhosin-0.9.32.1.tar.gz tar vjxf php-5.3.6.tar.bz2 cd p ...

  4. [0] Visual studio 2010 快捷键大全

    [窗口快捷键]Ctrl+W,W: 浏览器窗口 Ctrl+W,S: 解决方案管理器 Ctrl+W,C: 类视图 Ctrl+W,E: 错误列表 Ctrl+W,O: 输出视图 trl+W,P: 属性窗口 C ...

  5. EJB系列 - 会话Bean基础知识

    本人博客文章网址:https://www.peretang.com/basic-knowledge-of-session-bean/ 什么是会话 有限的时间周期内,客户端和服务器之间的连接 为什么使用 ...

  6. PHPCMS v9点击量增加值加大的方法

    PHPCMS v9点击量增加值加大的方法 在根目录/api 50行 $views = $r['views'] + 1; 修改数字1即可修改每次刷新页面点击量增加的数值.

  7. Maven中pom.xml的scope

    一.compile:编译范围compile是默认的范围:如果没有提供一个范围,编译范围依赖在所有的classpath 中可用,同时它们也会被打包.而且这些dependency会传递到依赖的项目中.   ...

  8. 按enter 进行搜索 enter提交表单

    //按enter 进行搜索 document.onkeydown = function(e){ var ev = document.all ? window.event : e; if(ev.keyC ...

  9. 让div产生滚动条

    .demo{ padding-right:10px; overflow-y:auto; padding-left:10px; scrollbar-face-color:#ffffff; font-si ...

  10. php中json对象数据的输出转化

    php中json对象数据的输出转化 public function get_my_now_citys(){ $datas=$this->_post('datas'); //前台js脚本传递给后端 ...