在开发中UITextField和UITextview这两个组件用的是非常频繁的,而且还要限制输入框的字数,UITextview要设置placeholder等,每个控件都要实现代理方法写相应的逻辑代码。是不是很麻烦?

很多新手是这样写的:

// 限制字数
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {if ([text isEqualToString:@""]) {return YES;}if (textView.text.length > 5) {return NO;}return YES;
}复制代码

这样写会有问题,当输入中文或粘贴字符到文本框时问题就出来了。

#为此我重写了UITextField和UITextview,实现一句话设置限制字数和placeholder。代理用block代替,使用更加方便灵活。

限制字数相关实现,完美解决刚提到的问题(UITextField和UITextview的实现思路一样):

if (self.limitLength > 0) { // 限制长度//获取高亮部分UITextRange *selectedRange = [textView markedTextRange];UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];// 没有高亮选择的字,则对已输入的文字进行字数统计和限制if (!position){if (toBeString.length > self.limitLength){NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:self.limitLength];if (rangeIndex.length == 1){textView.text = [toBeString substringToIndex:self.limitLength];}else{NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, self.limitLength)];textView.text = [toBeString substringWithRange:rangeRange];}}}}复制代码

效果图:

效果图

使用:

JHTextField *textField = [[JHTextField alloc] initWithFrame:CGRectMake(50, 50, 300, 44)];textField.limitLength = 5;textField.placeholder = @"请输入~";textField.layer.borderWidth = 1;textField.layer.borderColor = [UIColor lightGrayColor].CGColor;[self.view addSubview:textField];JHTextView *textView = [[JHTextView alloc] initWithFrame:CGRectMake(50, 120, 300, 200)];textView.limitLength = 10;textView.placeholder = @"请输入~";textView.layer.borderWidth = 1;textView.layer.borderColor = [UIColor lightGrayColor].CGColor;[self.view addSubview:textView];self.textView = textView;复制代码

demo地址:github.com/iOSHJH/Inpu…

另外说到输入框必然就会想到键盘挡住输入框怎么办?为此我隆重介绍一个轻量级的键盘管理器,一句话设置当前控制器的view跟随键盘起伏,妈妈再也不用担心键盘挡住输入框了,地址:juejin.im/post/59cb75…

有问题欢迎issues,若项目对你有用还望不吝给个star让我动力十足?

一句话设置UITextField、UITextview的字数限制和placeholder相关推荐

  1. UITextField 和 UITextView实现字数限制 输入若干字以后就无法继续输入的功能

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发过程中,我们会需要实现限制字数,也就是输入若干字以后就无法继续输入的功能,以UITextFiled为例,实现此功能只 ...

  2. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

    博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...

  3. 控件 UIView UILabel UITextField UITextView UIButton ;的字体、大小、单位、颜色

    转自:http://www.tuicool.com/articles/QZ3If2 //学习内容/*1.控件 UIView UILabel UITextField UITextView UIButto ...

  4. shell 统计一个词出现的概率_如何在Mac上设置系统范围的字数统计服务

    在本文中,我们将向您展示如何创建系统范围的服务,使您能够在TextEdit,Safari,Mail或Mac上的任何可让您突出显示文本的应用程序中立即获得字数统计和字符计数.如果您经常发现自己粘贴到空白 ...

  5. 一句话设置当前控制器的view跟随键盘起伏,妈妈再也不用担心键盘挡住输入框了...

    项目中有很多输入框,有输入框就会唤出键盘,唤出键盘就很经常键盘挡住输入框.如何解决这个问题? 这个问题并不难,相信大家都会写.但是写多了大家就会发现,项目中这么多页面有输入框的,那就意味着很多地方都要 ...

  6. IOS UITextView 和 UITextField 联想输入法字数限制

    UITextField  输入限制 [_tfTextFeild addTarget:self action:@selector(limitLength:) forControlEvents:UICon ...

  7. RxSwift设置 UITextField文本订阅未响应

    通过以下代码,可以快速实现输入框文本变化监听 textField.rx.text.orEmpty.subscribe(onNext: {print("您输入的是:\($0)")}) ...

  8. 设置UITextField占位符的颜色和字体

    今天刚学了UITextField控件, 感觉在里面设置占位符非常好, 给用户提示信息, 于是就在想占位符的字体和颜色能不能改变呢? 下面是小编的一些简单的实现. 主要有两种方法: 方法1:利用富文本 ...

  9. UITextView计算字数,限制字数

    要做字数限制,网上看了一些,都不是很好用,要不就是不能同时兼顾ios6,7 .在textViewDidChange:事件进行添加 - (void)textViewDidChange:(UITextVi ...

最新文章

  1. 使用instsrv.exe+srvany.exe将应用程序安装为windows服务
  2. 《噬血代码》:一款轻度的魂Like游戏
  3. 性能优化(数据库设计原则)
  4. node静态服务器优缺点_使用 Node.js 的优势和劣势都有哪些?
  5. 15大统计数据描绘网络安全行业市场蓝图
  6. 3D渲染集群,听说过吗?
  7. idea没有错误提示的解决方法(一直处于错误分析中)
  8. 电子商务数据运营的五大应用
  9. Tcl 语言 ——变量篇
  10. windows重置net use或者SMB协议
  11. 高等数学---第八章多元函数微分学---多元函数的极值与最值
  12. mysql怎么给时间段分组_mysql自定义时间段分组
  13. 怎么配置环境变量?(保姆级教程)
  14. 如何设置BIOS实现远程开机
  15. 江涛带你玩STM-CubeMx之OLED使用3线SPI和4线SPI驱动详解
  16. Android 悬浮窗基本使用
  17. JS获取当前时间戳与时间戳转日期时间格式
  18. 函数:GetDistance,计算两个经度纬度之间距离
  19. Jenkins生成APP二维码下载链接
  20. 《BI工程师必读》数据可视化篇 #02

热门文章

  1. 14.json文件读取
  2. mysql,php和js根据经纬度计算距离
  3. Linux 下编译安装OpenCV【转】
  4. 【Oracle】lsnrctl reload 命令简介
  5. Java中的Random()函数 【转载】
  6. 让 ASP.NET JS验证和服务端的 双验证 更简单
  7. Storm原理与实现
  8. 一个smarty 分页插件
  9. Netbeans Platform的Lookup -- 边学边记
  10. docker中的hassio升级_趣说Docker