我希望在新文本写入之前清除在UITextView上编写的先前文本。 我确实喜欢这个。
textView.text = @"";
textView.text = @"something";
但是,之前的文字没有被删除。它与当前文本重叠。 Textview不可编辑。
答案 0 :(得分:9)
您需要实现UITextViewDelegate和方法textViewDidBeginEditing
。以下代码在开始编辑时将textView的文本设置为@""
(无)。
- (void) textViewDidBeginEditing:(UITextView *) textView {
[textView setText:@""];
}
答案 1 :(得分:2)
首先将所选范围设置为textView的整个文本:
[textView setSelectedRange:NSMakeRange(0, textView.text.length)];
[textView setText:@""];
如:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
// Make the textView visible in-case the keyboard has covered it
[table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
// Keyboard toolbar prev/next buttons
[nextPreviousControl setEnabled:YES forSegmentAtIndex:0];
[nextPreviousControl setEnabled:NO forSegmentAtIndex:1];
//
// Erase all text in the textView before editing starts:
//
[textView setSelectedRange:NSMakeRange(0, textView.text.length)];
[textView setText:@""];
return YES;
}
答案 2 :(得分:1)
以下是swift的代码
func textViewDidBeginEditing(textView: UITextView) {
txtView.text = ""
txtView.textColor = UIColor.blackColor()
}
func textViewDidEndEditing(textView: UITextView) {
if txtView.text.isEmpty {
txtView.text = "Write your comment."
txtView.textColor = UIColor.blackColor()
}
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
if text == "\n" // Recognizes enter key in keyboard
{
textView.resignFirstResponder()
return false
}
return true
}
注意:请委托您的textview
答案 3 :(得分:0)
为您的文字字段设置clearsOnBeginEditing。