【问题标题】: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 个字符。

我该怎么做?

【问题讨论】:

    标签: ios objective-c cocoa-touch


    【解决方案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 个字符。
    • 文本已更新但光标位置不正确(在替换文本之前)
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    相关资源
    最近更新 更多