0

我有一个 UITextView 由 IBAction 上的几个不同 UITextFields 传递文本。

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

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

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

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

请有人给我一些指导,谢谢。

4

2 回答 2

0

来自苹果文档:

@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:@""];
于 2012-10-10T01:00:22.503 回答
0

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

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

编辑:

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

// .location: theContentLength - theLastEnteredTextLength
// .lenght: theLastEnteredTextLength
NSRange range = {theContentLength - theLastEnteredTextLength, theLastEnteredTextLength};
[theContent deleteCharactersInRange:range];
于 2012-10-10T01:11:56.227 回答