iOS TextView输入长度限制 设置placeholder
textView在使用中通常会有2个功能是最常用的
- 设置placeholder
- 限制输入长度
TYLimitedTextView刚好是为了解决这个2个问题而诞生的,下面讲解TYLimitedTextView的用法,有需要的可以参考(textField限制输入请参考我的文章iOS textField输入限制),demo下载地址:https://github.com/qqcc1388/TYLimitInputDemo
TYLimitedTextView能够快速实现功能
- placeholoder功能实现
- textview输入长度实时监听,控制
- 提供代理方法实现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的更多相关文章
- 简单几步实现 IOS UITextField输入长度的控制
在ios开发过程中,我们有时候需要对UITextField的输入长度进行控制,比如输入手机号码最大长度为11位等,而ios自身又不像android那样可以设置输入框的输入长度,接下来通过简单几步实现这 ...
- ios 限制输入长度
----------------UITextField限制输入的长度------------ - (BOOL)textField:(UITextField *)textField shouldChan ...
- iOS开发之UITextView,设置textView的行间距及placeholder
一.设置textView的行间距 1.如果只是静态显示textView的内容为设置的行间距,执行如下代码: // textview 改变字体的行间距 NSMutableParagraph ...
- iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)
项目中各个地方都会用到TextField,textField的输入也会有各种需求,各种限制,每次用到的时候要重写一遍这些限制,导致各种垃圾代码,各种重复,有一天,我终于看不下去了,于是把textFie ...
- iOS 限制TextField输入长度(标准)
iOS 限制TextField输入长度(标准) 网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入 ...
- iOS之限制TextField的输入长度
网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入长度的方法.我所采用的并不是监听方法而是最不同的 ...
- iOS- UITextField限制输入长度
限制输入长度的问题,在这里完美的解决了! //先创建一个textField 和 一个button. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
- iOS UITextView 输入内容实时更新cell的高度
iOS UITextView 输入内容实时更新cell的高度 2014-12-26 11:37 编辑: suiling 分类:iOS开发 来源:Vito Zhang'blog 11 4741 UIT ...
- 限制 UITextField 输入长度
限制 UITextField 输入长度 标签(空格分隔): UITextField UITextField 是 iOS 中最经常使用的组件之中的一个.关于它也有各种各样的需求,这些需求是它本身没有提供 ...
随机推荐
- JavaScript数组去重方法及测试结果
最近看到一些人的去面试web前端,都说碰到过问JavaScript数组去重的问题,我也学习了一下做下总结. 实际上最有代表性也就三种方法:数组双重循环,对象哈希,排序后去重. 这三种方法我都做了性能测 ...
- js变量提升和函数提升
变量,作为编程语言最基础的部分,每种语言的变量不尽相同,但又大径相庭.大部分编程语言的变量有块级作用域,如if.for.while... 但JavaScript不纯在块级作用域,而是函数作用域,并且有 ...
- Hybrid App开发之jQuery选择器
前言: 前面学习了JQuery的简单使用,今天进一步学习一下JQuery的选择器. 什么是选择器? JQuery选择器通过标签名.属性名或者内容对DOM元素进行快速准确的选择,而不必担心浏览器的兼容性 ...
- AngularJS高级程序设计读书笔记 -- 指令篇 之 内置指令
1. 内置指令(10-12 章) AngularJS 内置超过 50 个内置指令, 包括 数据绑定,表单验证,模板生成,时间处理 和 HTML 操作. 指令暴露了 AngularJS 的核心功能, 如 ...
- 深入浅出HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接 ...
- css的各种选择器
一.基本选择器 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元素 4. #foot ...
- Windows 10环境安装VIM代码补全插件YouCompleteMe
Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于P ...
- PHP加密解密数字
<?php /** * 加密解密类,PHP加密解密数字,适用于URL加密 * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密. * @version a ...
- js循环处理后台返回的json数组
<script type="text/javascript"> function gongdan_search(elm){ var dangqian_value=$(e ...
- 【LeetCode】125. Valid Palindrome
题目: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ig ...