Ios UITextView删除上次输入的文本

Ios UITextView删除上次输入的文本,ios,nsmutablearray,uitextfield,stringwithformat,Ios,Nsmutablearray,Uitextfield,Stringwithformat,IBAction上的几个不同UITextField向我传递了一个UITextView文本 textView.text = [NSMutableString stringWithFormat:@"%@ %@", textView.text,textField1.text]; 我正在尝试从文本视图中删除所选文本 textField.text = [NSMutableString stringWithString:@""]; 但它会删除所有文本,而不仅仅是选定的文本 有人能给我一些关于这方面的指

IBAction上的几个不同UITextField向我传递了一个UITextView文本

textView.text = [NSMutableString stringWithFormat:@"%@ %@",
textView.text,textField1.text]; 
我正在尝试从文本视图中删除所选文本

textField.text = [NSMutableString stringWithString:@""];
但它会删除所有文本,而不仅仅是选定的文本

有人能给我一些关于这方面的指导吗?谢谢。

来自苹果文档:

@属性(非原子)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:@""];

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

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

编辑: 如果在最后一个文本内容之前存在相同的文本内容,您将错误地删除它。因此,这里有一个更好的方法:

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

不,我得到一个NSString可能没有响应deleteCharactersInRange@user1725650只有
NSMutableString
实例可以响应
deleteCharactersRange
。奇怪的是,它仍然给我提供了NSString可能没有响应,但原始输入是一个NSMutableString。@user1725650您可以像这样将NSString传输到NSMutableString:
NSMutableString*mutableContent=[nsmutablestringwithstring:immutableContent]