UITextView删除最后输入的文本

时间:2012-10-10 00:46:54

标签: ios nsmutablearray uitextfield stringwithformat

我有一个UITextView被IBAction上的几个不同的UITextField传递给文本。

textView.text = [NSMutableString stringWithFormat:@"%@ %@",
textView.text,textField1.text]; 

我正在尝试从TextView中删除所选文本

textField.text = [NSMutableString stringWithString:@""];

但是它会删除所有文本而不是仅删除所选文本。

有人可以给我一些指示,谢谢。

2 个答案:

答案 0 :(得分:0)

来自Apple Docs:

  

@property(nonatomic) NSRange selectedRange

     

在iOS 2.2及更早版本中,选择范围的长度始终为0,表示选择实际上是插入点。在iOS 3.0及更高版本中,选择范围的长度可能不为零。

所以我想你应该这样做:

if (textField.selectedRange.location != NSNotFound && textField.selectedRange.length > 0)
    textField.text = [textField.text stringByReplacingCharactersInRange:textField.selectedRange withString:@""];

答案 1 :(得分:0)

您可以存储上次输入的文字(例如theLastEnteredText),然后将其从可变字符串对象(例如theContent)中删除,并将其设置为textField:

[theContent deleteCharactersInRange:NSRangeFromString(theLastEnteredText)];
textField.text = theContent;

编辑:

如果在最后一个文本内容之前存在相同的文本内容,您将错误地删除它。所以这是一个更好的方法:

// .location: theContentLength - theLastEnteredTextLength
// .lenght: theLastEnteredTextLength
NSRange range = {theContentLength - theLastEnteredTextLength, theLastEnteredTextLength};
[theContent deleteCharactersInRange:range];