关于iOS UITextView的一点使用心得,设置placeHolder效果

swift-UItextView的placeHodler属性封装 UItextView 的placeHodler属性封装 立即下载

前言:最近做了一个论坛发帖的功能,由于文字的输入较多,所以我选择了UITextView。大家都知道现在testView没有textField那样的提示(place Holder)功能,可是产品就要那个效果,所以憋出了这篇博客---- 给textView添加placeHolder效果

基本思路:在textView的第一行添加一个label,用label来提示起到place Holder的效果,当textview里面有文字的时候,让textview覆盖在label上面(背景色为白色),当textView里面的文字为空的时候,把textview的背景色透明,漏出label的文字。这里面用到了textView的代理方法

- (void)textViewDidChange:(UITextView *)textView;
当然了我们为了控制用户输入的不全是空格还可以用textview的其他代理:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidEndEditing:(UITextView)textView;
不啰嗦,上代码⬇️⬇️

1、先初始化textView

//初始化
-(void)setTextView
{
    //设置placeHolder
    UILabel *placeHolderLabel=[[UILabel alloc]initWithFrame:CGRectMake(18, 250, 100, 30)];
    placeHolderLabel.text=@"标题(必填)";
    placeHolderLabel.font=[UIFont systemFontOfSize:15];
    placeHolderLabel.textAlignment=NSTextAlignmentLeft;
    placeHolderLabel.textColor=[UIColor colorWithRed:136.0/255 green:136.0/255 blue:136.0/255 alpha:1];
    [self.view addSubview:placeHolderLabel];
    
    
    //设置textView
    CGRect titleFrame=CGRectMake(15, 250, 345, 200);
    UITextView *titleView=[[UITextView alloc]init];
    titleView.frame=titleFrame;
    titleView.font=[UIFont systemFontOfSize:15];
    titleView.textColor=[UIColor blackColor];
    titleView.backgroundColor=[UIColor clearColor];//默认颜色 透明,直接显示提示内容
    titleView.returnKeyType=UIReturnKeyDone;
    titleView.delegate=self;//记得声明代理
    [self.view addSubview:titleView];
}
2、实现代理方法

//显示提示的placeHolder,如果输入的全是空格
- (void)textViewDidEndEditing:(UITextView *)textView;
{//关于字符串的拼接删除方法都在NSString类里面,大家自行查阅
    NSString *stringWithoutSpace;
    stringWithoutSpace=[textView.text stringByReplacingOccurrencesOfString:@" " withString:@""];
    if (stringWithoutSpace.length==0) {
        textView.text=@"";
        textView.backgroundColor=[UIColor clearColor];
    }
}
//字数限制
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
{
    if ([text isEqualToString:@"\n"]) {//按下return键
        //这里隐藏键盘,不做任何处理
        [textView resignFirstResponder];
        return NO;
    }
    NSString *toBeString = textView.text;
    UITextRange *selectedRange = [textView markedTextRange];
    //获取高亮部分
    UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];
    // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
    if (!position)
    {
        if (toBeString.length >= 200 && ![text isEqualToString:@""]&&textView.tag==201510233) {
            return NO;
        }
    }
    
    return YES;
}
//实时监控输入框的内容
- (void)textViewDidChange:(UITextView *)textView;
{
    //显示隐藏placeholder
    if(textView.text.length>0)
    {
        textView.backgroundColor=[UIColor whiteColor];
    }
    if (textView.text.length==0)
    {
        textView.backgroundColor=[UIColor clearColor];
    }
    
}

基本上这样我们就可以实现想要的效果了,当然了可能还有别的更简单的方法来实现。


以上仅代表我个人的想法,望大家多多指正,好方法可共享,新手文档,高手勿喷!


swift-UITextView的封装可以自定义placeholder UITextView 的封装,可以自定义 placeholder、文字的(字体、颜色)、文字(字体、颜色),自适应高度,实时监测输入文字的最大高度,实时监测输入文字的最大个数,可以限制最大输入文字字数 立即下载

相关推荐

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

解决UITextView的placeholder属性

解决UITextView的placeholder属性,并解决了键盘遮挡问题,代码如下: 第一个类: #import  @interface HPTextViewInternal : UITextView {    NSString *placeholder;    UIColor *placeholderColor; @private       

追梦 2301

保姆级教程:用AdGuard DNS代理实现全设备广告过滤(含Win/Mac/安卓/iOS配置)

本文提供了一份详尽的AdGuard DNS代理配置指南,帮助用户在全设备(Win/Mac/安卓/iOS)上实现广告过滤。通过系统级DNS设置,AdGuard能有效拦截广告、跟踪器和恶意网站,提升隐私保护和浏览效率。教程涵盖原理说明、各平台配置步骤及高级优化技巧,适合不同技术水平的用户。

weixin_42656416的博客 824

UITextView设置placeholder的方法

UITextField可直接设置placeholder字符串来添加输入之前的提示文字,而UITextView是没有placeholder属性的,可以添加一个自定义的placeholder来替代。 原理就是在UITextView的代理里来检测及添加,代理如下 -(void)textViewDidChange:(UITextView *)textView 在每次输入时会调用,我们在U

 ideaOS^(BOOL coding) 2416

WSL2 Ubuntu 22.04安装NVIDIA驱动避坑指南:从驱动版本选择到CUDA环境验证

本文详细介绍了在WSL2 Ubuntu 22.04中安装NVIDIA驱动和配置CUDA环境的完整流程,包括驱动版本选择、环境变量设置以及常见问题解决方案。通过本指南,用户可以避免常见的安装陷阱,确保GPU加速环境正确配置,适用于深度学习开发和CUDA编程。

weixin_28419039的博客 464

XTDrone——ALOAM与3D激光雷达三维SLAM(处理没有点云和坐标系报错的问题)

本文介绍了XTDrone中配置如何在三维环境中使用A-LOAM算法配合velodyneHDL32激光雷达包括依赖包安装、代码修改和PX4系统配置,以及相关报错细节的注意事项。

weixin_45390670的博客 1327

iOS —— UITextView实现Placehodler属性

感觉好久了,时间太快。 我们在iOS中UITextField本身继承关系是这样的:UITextField——>UIScrollView——>UIView。则UITextView并没有具有带有PlaceHolder属性,用来提示用户。视觉和体验上总是有些不适,尤其是对于略带强迫症的我来说。 我们在iOS中UITextField本身继承关系是这样的:UITextField——>UIScroll

天空 884

实战演练 | ABAQUS显式动力学分析在金属切削仿真中的应用

本文详细介绍了如何利用ABAQUS显式动力学分析进行金属切削过程的二维仿真。通过从零开始的完整流程,包括几何建模、材料本构与失效定义、网格划分、接触设置、边界条件施加,到结果后处理与切削力提取,为工程师和研究人员提供了实用的仿真方法,以优化刀具设计和加工工艺。

purple的博客 931

UITextView-placeholder的实现和解析

前言项目中UITextfield使用的比较频繁,对于placeholder可以直接设置,文字,颜色,字体等等,但是UITextView继承自UIScrollView,并没有placeholder属性。项目中以前就有使用到UITextView的placeholder,当时只是外加了一个UILabel,但是每次都需要重新定制label,所以想着能够写一个类别,添加一个label,实现字体,颜色,位置的可

键盘吧嗒吧嗒 925

视觉提示学习(Prompt Learning):CV领域的GPT时刻?

视觉提示学习(Prompt Learning):CV领域的GPT时刻? ,人工智能,计算机视觉,大模型,AI,在人工智能技术不断演进的今天,计算机视觉(Computer Vision,CV)作为人工智能领域的重要分支,始终致力于让机器 “看懂” 世界。从早期基于传统特征工程的图像识别方法,到深度学习时代卷积神经网络(Convolutional Neural Networks,CNN)的崛起,CV 领域经历了多次重大变革。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

高通SDX12:ProSLIC Si32185移植调试

高通 SDX12 语音芯片slic 音频驱动 Si32185

不秃头的程序猿Gabriel的博客 2038

iOS给UITextView添加placeholder

在iOS开发中我们经常会用到UITextField和UITextView,在使用UITextField时系统会自己提供placeholder属性,但是在UITextView则没有,那么如何在UITextView中设置placeholder呢,如下所示: 方法一: #pragma mark - 懒加载 - (UITextView *)textView { if (!_textView) { _textView = [UITextView new]; _te...

qq_37269542的博客 2519

深入URP之Shader篇5: SimpleLit Shader分析(1)

本篇开始分析simple lit shader。我们通过分析unlit shader了解了URP shader的结构,以及一些基础功能。而simple lit shader包含了更多的内容。本篇开始,就不会特别仔细的逐行去分析shader文件了,只会针对pass的功能中比较有意思且之前没看到过的内容进行分析。名字为的pass,它的Tags为: 根据URP的文档:说明这是一个前向渲染路径的pass,虽然URP(至少是10.8.1版本)还没有正式支持Deferred Rendering,但URP已经为它打了很多

聚焦游戏和图形引擎开发技术 1901

UITextView-Placeholder 使用教程

** UITextView-Placeholder ** 是一个轻量级的 Swift 开源库,旨在为 UITextView 提供占位符(placeholder)功能,类似于 UITextField 的固有特性。在 iOS 开发中,默认的 UITextView 控件并不直接支持占位文字,而此项目则解决了这个问题,允许开发者轻松地为 UITextView 设置提示性文字,提升用户体验。 ## 2.

gitblog_00237的博客 1174

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ios UITextView placeHolder效果

我们知道UITextView没有像UITextField一样的placeholder属性。 但是我们通过如下方法让UITextView实现一样的效果1.给UITextView添加初始化默认文字,当成placeholder,并且颜色设置成灰色2.ViewController实现UITextView的代理UITextViewDelegateclass yourUIViewController:UIVi

Great_Smile的专栏 792

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

UITextView设置类似placeholder的效果

想要实现类似UITextFiled的placeholder的效果有如下两种方式,代码实现方式如下: 一、方法一: - (void)viewDidLoad{ commentTxtView.text = @"Comment"; commentTxtView.textColor = [UIColor lightGrayColor]; commentTxtView...

阿瞒--治国之能臣 乱世之奸雄 393

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

iOS控件UITextView 实现placeholder效果和解决UITableView键盘遮挡

平时开发中老是出现多行的文本而且要有placeholder提示,就自己整理项目中部分代码以供参考、讨论,希望有更好实现方法的人多多指教。 思路:通过改变UITextView的文本颜色实现placeholder效果,通过改变UITableView的setContentOffset方法解决键盘遮挡 1、创建UITextView           textView = [[UITextView...

niepeng109的专栏 2371

iOS-UITextView的placeholder以及字数控制

我们都知道UITextView控件不像UITextField一样有一个placeholder属性来设置文本输入框的灰色提示文本,这个时候我们可以自己来实现,效果图如下: 代码如下: static const int LimitMaxWord = 100; @interface AddRemarkView ()<UITextViewDelegate> /// 备注输入框 @...

MinggeQingchun的博客 777

IOS UITextView加上placeholder

UITextView上如何加上类似于UITextField的placeholder呢,其实在UITextView上加上一个UILabel,然后再实现 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text这个代理方法就可以了。

追随我心的专栏 5528

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

一、设置textView的行间距 1.如果只是静态显示textView的内容为设置的行间距,执行如下代码: //    textview 改变字体的行间距      NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];      paragraphStyle.lineSpa

ridxmc的博客 704

UITextView实现Placeholder功能

在ios中我们UITextField有Placeholder的功能,但是UITextView却没有这个方法,有时候我们也需要实现这样的Placeholder功能,StackOverFlow给我们提供了一个重写UITextView的方法,少量代码就实现了这个功能,值得学习一下。。 #import @interface UIPlaceHolderTextView : UITextView @p

u012186949的专栏 1321

ios textview间距_iOS开发之UITextView,设置textView的行间距及placeholder

一、设置textView的行间距1.如果只是静态显示textView的内容为设置的行间距,执行如下代码://textview 改变字体的行间距NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];paragraphStyle.lineSpacing = 10;//...

weixin_39822423的博客 174

实现UITextView的placeholder效果

我们知道在iOS开发时,控件UITextField有个placeholder属性,UITextField和UITextView使用方法基本类似,有两个小区别:1.UITextField单行输入,而UITextView可以多行输入。2.UITextField有placeholder属性,而UITextView没有。至于两者的代理方法,原理基本差不多,只是方法名略有差异。         如何为

Dancer2015 的博客 523

iOS开发-带Placeholder的UITextView实现

iOS中UITextField带有PlaceHolder属性,可以方便用于提示输入。但是同样可以进行文本输入的UITextView控件则没有PlaceHolder属性,还是有些不方便的,尤其是对于略带强迫症的我来说。 然后搜索了一番,发现广大开发者的智慧的无穷的,找到一种替代方案,如下: 核心思路就是使用2个UITextView来模拟PlaceHolder的效果,其中做为输...

dly2014的博客 183
下一篇: iOS 取相册照片/打开相机
gp103
博客等级 码龄11年 158粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值