iOS开发 ☞ UITextView使用详解

本文介绍了在iOS应用中如何有效限制UITextView组件的最大输入字数,并针对中文输入法及第三方键盘输入换行符等特殊情况提供了实用解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、限制输入字数
方案一

//只能判断非联想输入,pass
- (BOOL)textView:(UITextView *)textView  
    shouldChangeTextInRange:(NSRange)range   
    replacementText:(NSString *)text 

方案二

//通用方法
- (void)textViewDidChange:(UITextView *)textView;  

经常碰到UITextView限制输入字数的需求,那么问题来了,系统键盘中文输入法时,拼音也会显示在输入框中,这样在所以没输入一个字母,都会执行- (void)textViewDidChange:(UITextView *)textView,从而使得计算最大字数出现问题,解决办法如下:
在 - (void)textViewDidChange:(UITextView *)textView方法中

if ([[[textView textInputMode] primaryLanguage] isEqualToString:@"zh-Hans"]) {
        UITextRange *selectedRange = [textView markedTextRange];
        UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];
        if (!position) {
        //计算字数
        }
    }else {

    //计算字数
        }

    }

上面这个方法在iOS9上,中文输入法下一直输入,position会为空,从而导致用户输入的拼音都不见了。

有些时候为了防止刷屏,只输入换行的情况下是不允许发送的,对于像讯飞、百度这样的键盘可以用这样判断:

if ([[text stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" \n"]] isEqualToString:@""]) {
        return;
    }

搜狗的换行为\r

禁用第三方键盘:在Appdelegate里

- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier
{
    return NO;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值