UITextFiled 和UITextView 限定长度和判断输入表情

iOS——判断UITextField/UITextView输入的字符中是否含有系统表情 在做iOS客户端开发的过程中,有可能有这样的需求:对一条内容进行评论(可是输入的评论内容中可能含有系统表情),将评论内容提交给服务器。当输入的评论内容中含有系统表情的时候不能向服务器提交这条评论,或者评论后app直接给崩掉了,这是让人不可容忍的,因此要排查输入的内容是否含有系统表情,以便给使用者给出提示。下面给出输入的字符中是否含有系统表情的写法。 //"判定"控件的touchUpInsid 阅读详情

001 UITextView 限定长度

_noteStr就是开发者自己要控制的TextView

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    
    if ([NSString stringContainsEmoji:text]) {
        text = [NSString filterEmoji:text];
        return NO;
    }
    
    if (_noteStr.text.length > 50) {
        [SVProgressHUD showInfoWithStatus:@"最多输入50字符"];
        _noteStr.text = [textView.text substringToIndex:50];
      
    }
    _limitNumLab.text = [NSString stringWithFormat:@"%ld/50",textView.text.length];
    
    return YES;
}

002 UITextFiled 限定长度

-(void)textFieldDidChange :(UITextField *)theTextField{
    
if (theTextField.text.length >1) {
        theTextField.text = [toBeString substringToIndex:1];
   }
}

003 判断输入😊

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    
    if ([NSString stringContainsEmoji:text]) {
        text = [NSString filterEmoji:text];
        return NO;
    }

    
    return YES;
}

+ (BOOL)stringContainsEmoji:(NSString *)string{
    __block BOOL returnValue = NO;
    
    [string enumerateSubstringsInRange:NSMakeRange(0, string.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {
        
        const unichar hs = [substring characterAtIndex:0];
        if (0xd800 <= hs && hs <= 0xdbff){
            if (substring.length > 1){
                const unichar ls = [substring characterAtIndex:1];
                const int uc = (hs - 0xd800) * 0x400 + (ls - 0xdc00) + 0x10000;
                if (0x1d000 <= uc && uc <= 0x1f77f){
                    // 有emoji;
                    returnValue = YES;
                }
            }
        }else if (substring.length > 1){
            const unichar ls = [substring characterAtIndex:1];
            if (ls == 0x20e3){
                // 有emoji
                returnValue = YES;
            }
        }else{
            if (0x2100 <= hs && hs <= 0x27ff){
                returnValue = YES;
            }else if (0x2B05 <= hs && hs <= 0x2b07){
                returnValue = YES;
            }else if (0x2934 <= hs && hs <= 0x2935){
                returnValue = YES;
            }else if (0x3297 <= hs && hs <= 0x3299){
                returnValue = YES;
            }else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50 ){
                returnValue = YES;
            }else if (hs == 0x200d){
                returnValue = YES;
            }
        }
    }];
    
    return returnValue;
}

+ (NSString *)filterEmoji:(NSString *)string{
    __block NSString *newText = @"";
    
    BOOL isContainsEmoji = [NSString stringContainsEmoji:string];
    if (isContainsEmoji){
        if (string.length == 1){
            newText = [string substringToIndex:string.length - 1];
        }else{
            newText = [string substringToIndex:string.length - 2];
        }
    }else{
        newText = string;
    }
    
    return newText;
}

总结:感谢测试提出的优化点

swift-UITextFieldUITextView限制输入 UITextField、UITextView 限制输入 立即下载

相关推荐

ios-UITextField,UITextView限制输入长度和类型.zip

对UITextField,UITextView增加字符,字节限制,输入字符类型限制 typedef NS_ENUM(NSInteger, XLFTextLimitType) { XLFTextLimitTypeNone, // 无限制 XLFTextLimitTypeByte, // 字节数限制 XLFTextLimitTypeLength, // 字符个数限制 }; typedef NS_ENUM(NSInteger, XLFTextLimitInputType) { XLFTextLimitInputTypeNone, // 没有限制 XLFTextLimitInputTypeEnglish, // 纯英文 XLFTextLimitInputTypeChinese, // 纯中文 XLFTextLimitInputTypeNumber, // 纯数字 XLFTextLimitInputTypeFloatNumber, // 小数 XLFTextLimitInputTypeTelephoneNumber, // 手机号码 XLFTextLimitInputTypeEmail, // 邮箱 XLFTextLimitInputTypeEnglishOrChinese, // 中英混合 XLFTextLimitInputTypeEnglishOrNumber, // 英文和数字混合 XLFTextLimitInputTypeEnglishAndChinese, // 中英混合 XLFTextLimitInputTypeEnglishAndNumber, // 英文和数字混合 }; github: https://github.com/MarkeJave/LimitTextInput.git

UITextView限制行数

-(BOOL)textView:(UITextView *)textViewshouldChangeTextInRange:(NSRange)range  replacementText:(NSString*)text {      if (textView.contentSize.height > 104){       textView.text = [textView.text

u012490953的专栏 1539

TextField和TextView限制输入字数长度

主要为大家详细介绍了TextField和TextView限制输入字数长度代码,感兴趣的小伙伴们可以参考一下

UITextView 限制输入文本长度

1.中,英文字符输入时限制。 2.带emoji时截取显示半个或乱码字符处理。

baidu_33298752的博客 587

告别理论劝退:用动画和Tanner图轻松理解QC-LDPC的译码原理(BP算法详解)

本文通过动画和Tanner图直观解析QC-LDPC码的BP译码原理,帮助读者轻松理解802.11ac协议中的编译码过程。文章详细展示了QC-LDPC的结构之美、BP算法的动态信息流动以及LLR的视觉化解读,并对比了硬判决算法的性能差异,为开发者和研究者提供了实用的可视化工具开发建议。

weixin_30411239的博客 492

[ENVI]-[高光谱遥感]-波谱沙漏分析工具的使用

图1-2-1查看特殊波段的坏波段图1-2-2在中添加坏波段ENVI波谱沙漏分析工具MNF变换。

m0_57992372的博客 1469

详释(常见UITextView 输入之字数限制)之一---固定长度

UITextView的详细讲解,限制字符长度输入。

fengsh998的专栏 3万+

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆

在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo

weixin_34295316的博客 1777

[iOS]UITextView 输入字数限制

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { return textView.text.length + (text.length - range.length) <= 30; }

Gamin 2393

使用conda环境python3.13和python3.12下安装vllm过程记录

使用conda环境python3.13和python3.12下安装vllm过程记录

没刮胡子的程序员专栏 885

2026年中科曙光嵌入式软件岗位面试题库(附参考答案)

嵌入式系统与C/C++基础摘要 硬件与外设总线 SPI总线:高速全双工同步串行接口,采用SCLK、MOSI、MISO和CS信号线,支持一主多从架构,典型应用于Flash存储、传感器等高速外设。 I2C总线:两线制低速串行总线(SDA/SCL),支持多主多从,需注意地址冲突和信号完整性。 时序约束:包括建立时间、保持时间、时钟周期等,是保障电路稳定运行的关键。 AD转换:将模拟信号转换为数字信号,应用于传感器采集、音频处理等场景。 PC寄存器:存储下一条指令地址,控制程序执行流,在跳转和中断时自动更新。 C/

Open 69

UITextView限制输入长度

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ if (textView.text.length > 150) //或者range.location >= 150 return FALSE;

xyxjn的专栏 3754

使用FSL对DTI数据进行预处理

在fsl官网我们可以看到是同时使用了AP和PA图像处理,采用的是最小二乘法将2个图像合并为1个图像。–inindex此处需要处理的是PA图像,在acq_param.txt中我们是把这个放在第一行的,此处为1,如果处理的是AP图像,则此处为2。为了校正磁场引起的畸变,对DTI的B0像分别采集了A>P和P>A的反向编码的两种B0像。即如果AP和PA只有1个B0像时,那么这里就是两行,如果各有3个B0像则这里应该是6行。假设转换后的图像为sub01_AP.nii.gz和sub01_PA.nii.gz。

weixin_52073820的博客 4839

UITextView的使用详解

http://blog.sina.com.cn/s/blog_9693f61a0101aode.html //初始化并定义大小 UITextView*textview = [[UITextViewalloc]initWithFrame:CGRectMake(20,10,280,30)]; textview.backgroundColor=[UIColor...

dly2014的博客 204

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

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

UITextView限制字数与行数

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ CGFloat textHeight = textView.contentSize.height; NSLog(@"%@",[NSString str...

weixin_30821731的博客 253

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

UITextView行数限制:输入字符后,判断是否会超过限制行数

UITextView行数限制:输入字符后,判断是否会超过限制行数 在shouldChangeTextInRange方法中判断

gukong的专栏 5461

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Swift 4.1】 UITextView 禁止输入Emoji表情,并且控制字数

extension String{ /// 判断是不是Emoji /// /// - Returns: true false func containsEmoji()-&amp;amp;gt;Bool{ for scalar in unicodeScalars { switch scalar.value { case 0x1F...

Emperor_huanzi 的博客 2850

UITextView限制字符长度和过滤表情

给UITextView 添加PlaceHolder [self.addressTextView jk_addPlaceHolder:@"请输入"]; #pragma mark -- UITextViewDelegate -- - (BOOL)textViewShouldBeginEditing:(UITextView *)textView{ self.labelContents.hidden = YES; return YES; } - (BOOL)te...

王正魁 482

UITextView的动态适应高度处理

本文章主要是处理自适应高度的。想到自适应高度,想必大家都知道使用boundingRectWithSize:options:attributes 来计算。嗯确实,这是个利器。其本上能正确返回字体的rect。但对于UITextView 似乎使用此方法计算出来的结果比实际显示的要小。为什么呢?我个人也在网上搜了好多,但都不尽人意。于是乎想是不是UITextView做了些额外的处理,比如把行高,边框宽也加

fengsh998的专栏 2万+

UITextField和UITextView正确限制输入字符长度,中文汉字预输入正确处理方式

一般而言,字符串输入长度限制,在要求不是很高的情况下,直接在textField或textView的didEndEditing方法中进行提示和文字截取,即可满足开发的需要; 对于需要在输入过程中限制字符串输入长度的情况下,则只能在textDidChange中处理,然而直接在这里限制也还是会有限制不完美的问题,即在输入中文时,存在预录入中文汉字的问题,这时候如果...

Yashon 705

如何限制UITextView上文字的长度

这个问题基本有两种解决思路,一是在输入完毕或即将返回时判断文字的长度是否超过限制,  这种方法实现起来简单,只需在委托方法 -(BOOL)textViewShouldEndEditing:(UITextView *)textView  中加以判断即可,但是这种方式体验不好。   另外一种就是通过   -(BOOL)textView:(UITextView *)textView shouldC

fingerplay的专栏 2603

UITextView和UITextField限制输入长度

UITextView要实现UITextViewDelegate协议: _descriptionTextView.delegate=self; - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ if ([text isEqualToString:@""] && range.length > 0) {

yaochangliang的博客 350

UITextField UITextView 输入长度限制

要限制一个TextField的输入长度,包含字母、数字、特殊符号、汉字,大多数人想到以下这个方法如果不输入汉字的话,下面这个方法可以,但是如果要输入汉字的话,这个方法就满足不了- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSStr...

chenqing_512的博客 454

UITextField ,UITextView 输入长度的限制

UITextField方法一:UITextFieldDelegate(Tip:中文联想输入状态有问题)- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not ch

Bob的专栏 1428
上一篇: 并查集
下一篇: OC中 子控件 传递方法几种方案
Coding_Physical
博客等级 码龄12年 160粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值