在有限的文本字段长度上剪切粘贴的文本

Posted

技术标签:

【中文标题】在有限的文本字段长度上剪切粘贴的文本【英文标题】:Cut pasted text on limited textField length 【发布时间】:2018-06-13 22:34:06 【问题描述】:

我的代码如下:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

    if(range.length + range.location > textView.text.length)
    
       return NO;
    
    NSUInteger newLength = [textView.text length] + [text length] - range.length;
    return newLength <= 80;

在我的 textField 中限制文本编辑最多 80 个字符。

我想要一种在该 textField 中粘贴文本的方法,但不是拒绝粘贴,而是剪切它以填充 80 个字符。

我该怎么做?

【问题讨论】:

【参考方案1】:

创建新字符串,截断为 80,并更新文本视图。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

    NSString *newText = [textView.text stringByReplacingCharactersInRange:range withString: text];
    if (newText.length > 80) 
        newText = [newText substringToIndex: 80];
        textView.text = newText;

        return NO;
     else 
        return YES;
    

【讨论】:

如果textView已经有内容怎么办?或者如果用户只替换了其中的一部分? 这段代码处理了这个问题。我的答案中的第一行采用当前值,根据当前选择和输入(键入、粘贴或删除)文本进行替换,然后将更新后的文本截断为前 80 个字符。 文本已更新但光标位置不正确(在替换文本之前)

以上是关于在有限的文本字段长度上剪切粘贴的文本的主要内容,如果未能解决你的问题,请参考以下文章

C#限制文本框输入

PHP 将文本剪切为特定长度。

在条码打印软件中怎样添加剪切线

CListView 控件的列文本长度有限

group_concat 是不是有长度限制或它不能在文本字段上工作的其他原因

Magento 文本字段最大字段长度(5 个字符)