如何在写文本之前清除UITextView中的先前文本?

时间:2011-09-10 14:47:00

标签: iphone

我希望在新文本写入之前清除在UITextView上编写的先前文本。 我确实喜欢这个。

textView.text = @"";
textView.text = @"something";

但是,之前的文字没有被删除。它与当前文本重叠。 Textview不可编辑。

4 个答案:

答案 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