【问题标题】:how to perform backspace and delete?如何执行退格和删除?
【发布时间】:2011-10-24 12:22:10
【问题描述】:

我正在开发一个代码,我需要从UITextView 执行删除和退格。 我试过了:

-(IBAction)delete:(id)sender{
    uitextview.text =[uitextview.text substringToIndex:[uitextview.text length]-1];
}

这会执行退格并删除最后一个字符,但如何在特定光标位置从uitextview 中的特定位置删除字符。

请帮帮我。

【问题讨论】:

    标签: ios uitextview


    【解决方案1】:

    使用UITextViewselectedRange 属性。这表示光标位置和/或选定的文本(如果没有选择文本,长度将为零)。

    因此,如果 range.length > 0,您可以使用stringByReplacingCharactersInRange:withString: 删除选定的文本。

    否则,创建一个位置比所选范围小一且长度为 1 的新范围,然后删除此字符。

    您可能需要重新设置selectedRange 属性以确保光标最终位于适当的位置。我想这一切都是在使用标准键盘时自动完成的。

    【讨论】:

    • 我已经尝试使用 NSRange selectedRange = uitextview.selectedRange; NSLog(@"%d",selectedRange.length); NSLog(@"%d",selectedRange.location); int temploc=selectedRange.location;并在删除位置我给出了临时位置,但它不起作用
    • 我不确定你的意思,我更新的答案有帮助吗?如果没有,您能否用您正在使用的代码和您得到的结果更新问题(“不起作用”不是很有帮助)
    【解决方案2】:

    感谢您的建议。我想建议一种执行这项工作的方法。

     NSRange range = uitextview.selectedRange;
    
    
        NSRange selectedRange = uitextview.selectedRange;
    
        NSLog(@"%d",selectedRange.length);
        NSLog(@"%d",selectedRange.location);
        int temploc=selectedRange.location;
    
        NSMutableString *text = [uitextview.text mutableCopy];
        // NSLog(@"Length: %d Location: %d", range.length, range.location);
        if (range.length > 0) {
            [text deleteCharactersInRange:range];
        }
        if (range.length == 0 && range.location != 0) {
            NSRange backward = NSMakeRange(range.location - 1, 1);
            // NSLog(@"Length: %d Location: %d", backward.length, backward.location);
            [text deleteCharactersInRange:backward];
        }
    
        uitextview.text = text;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多