我有一个UITextView被IBAction上的几个不同的UITextField传递给文本。
textView.text = [NSMutableString stringWithFormat:@"%@ %@",
textView.text,textField1.text];
我正在尝试从TextView中删除所选文本
textField.text = [NSMutableString stringWithString:@""];
但是它会删除所有文本而不是仅删除所选文本。
有人可以给我一些指示,谢谢。
答案 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];