2011-09-10 65 views
6

Tôi muốn xóa văn bản trước được viết trên UITextView trước khi văn bản mới được viết trên đó. Tôi đã làm như thế này.Làm thế nào để xóa văn bản trước đó trong UITextView trước khi viết văn bản?

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

Nhưng, văn bản trước đó không bị xóa. Nó trùng lặp với văn bản hiện tại. Chế độ xem văn bản không thể chỉnh sửa được.

+0

Thêm NSLog (@ "Trường văn bản Nội dung:% @", textField.text); sau dòng đầu tiên, đầu ra là gì? Bạn đã tạo textField theo lập trình hoặc sử dụng Trình tạo giao diện chưa? – 0x8badf00d

+0

Tôi xin lỗi. Nó là textView, không phải textField. Tôi đã chỉnh sửa. Tôi đã tạo ra chế độ xem văn bản theo chương trình. – user698200

Trả lời

0

Đặt clearsOnBeginEditing cho trường văn bản của bạn.

+0

Tôi xin lỗi. Nó là textView, không phải textField. Tôi đã chỉnh sửa. – user698200

9

Bạn cần triển khai UITextViewDelegate và phương thức, textViewDidBeginEditing. Đoạn mã sau đặt văn bản của textView thành @"" (không có gì) khi nó bắt đầu chỉnh sửa.

- (void) textViewDidBeginEditing:(UITextView *) textView { 
    [textView setText:@""]; 
} 
+0

textViewDidBeginChỉnh sửa không được gọi. TextView nằm bên trong ViewController. Tôi đặt textView trong root viewController, nó được gọi. Tuy nhiên, viewController của tôi được đẩy viewController, nó không được gọi. – user698200

+0

Đặt 'textView.delegate' thành' self'. –

2

Đặt phạm vi lựa chọn cho toàn bộ văn bản của TextView đầu tiên:

[textView setSelectedRange:NSMakeRange(0, textView.text.length)]; 
    [textView setText:@""]; 

Như trong:

- (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; 
} 
+0

textViewShoulBeginChỉnh sửa không được gọi. TextView nằm bên trong ViewController. Tôi đặt textView trong root viewController, nó được gọi. Tuy nhiên, viewController của tôi được đẩy viewController, nó không được gọi. – user698200

+0

đặt điều này trong 'ViewController' của bạn có' UITextView' trong phương thức 'viewDidLoad':' [textView setDelegate: self]; '. – chown

+0

Và trong tập tin tiêu đề cho 'ViewController' của bạn thêm này' 'như thế này ->' @interface MyViewController: UIViewController {' – chown

1

Đây là một mã cho nhanh chóng

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 
    } 

Lưu ý: cấp cho đại biểu của bạn xem văn bản

Các vấn đề liên quan