textView 键盘变发送,置灰发送,小细节优化

本文介绍了在iOS开发中如何将TextView的键盘返回键变为‘发送’按钮,并在用户未输入内容时使‘发送’按钮置灰。通过调整UITextView的属性并利用特定的代理方法,实现点击‘发送’即发送TextView内容的功能。同时,文章还讨论了防止全空格输入及去除字符串首尾空格的策略。

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

最近在做发表回复评论这样的功能,总结了一点小小的知识点,写下来方便以后查找

1,将UITextView 弹起的键盘换行按钮变成发送按钮,这个只要改变一个属性即可

_textView.returnKeyType = UIReturnKeySend;

这个属性是一个枚举类型,可以根据自己的需要去进行设置

typedef NS_ENUM(NSInteger, UIReturnKeyType) {
    UIReturnKeyDefault,
    UIReturnKeyGo,
    UIReturnKeyGoogle,
    UIReturnKeyJoin,
    UIReturnKeyNext,
    UIReturnKeyRoute,
    UIReturnKeySearch,
    UIReturnKeySend,
    UIReturnKeyYahoo,
    UIReturnKeyDone,
    UIReturnKeyEmergencyCall,
    UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),
};

2,点击“发送”按钮直接将UITextView里的内容发送出去

在这里有一个坑人的地方,UITextField有代理方法可以实现,但是在UITextView的代理方法中就没有相应的方法,在UITextField中的代理方法如下

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [self.view endEditing:YES];
    return YES;
}

在UITextView中没有就只要用其他的代理方法进行代替,来实现这一功能

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if ([text isEqualToString:@"\n"]) {
        [self.view endEditing:YES];
        return NO;//这里返回NO,就代表return键值失效,即页面上按下return,不会出现换行,如果为yes,则输入页面会换行
    }
    return YES;
}

这样就能实现那样的功能。

3,输入的不能是空字符并且当没有输入内容的时候“发送”按钮置灰不可用

_textView.enablesReturnKeyAutomatically = YES;

这样就能实现效果

4,不能输入的都是空格并且只保留中间的空格,不保留前后的空格

不能都是空格的判断

[[self.textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0

去掉前后空格

NSCharacterSet *set = [NSCharacterSet whitespaceCharacterSet];
NSString *str = [textView.text stringByTrimmingCharactersInSet:set]

https://blog.youkuaiyun.com/ChasingDreamsCoder/article/details/53180459   这个里面有更多有关UITextView的东西

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值