2011-08-11 23 views

Trả lời

47

Bạn chắc chắn có thể sử dụng một phương pháp UITextViewDelegate của:

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView 

Chỉ cần return YES và đánh chặn bên trong phương thức đó. Bạn cũng có thể làm điều đó cho UITextFields với UITextFieldDelegate và:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

Hy vọng điều đó sẽ hữu ích.

+1

Đây phải là câu trả lời được chấp nhận –

+0

Rất đồng ý. –

4

câu trả lời trước làm công việc tuyệt vời cho UITextBox, nhưng nếu bạn có một lớp tùy biến bắt nguồn từ NSResponder và cần phải biết khi nào nó trở nên trả lời đầu tiên:

-(BOOL) becomeFirstResponder 
{ 
    // Your stuff here 
    return YES; 
} 
1

Như trên, bạn có thể ghi đè lên becomeFirstResponder nhưng lưu ý rằng bạn phải gọi triển khai siêu lớp. Nếu bạn không, những thứ như popping bàn phím trên một trường văn bản sẽ không hoạt động. nghĩa là

override func becomeFirstResponder() -> Bool { 
    if super.becomeFirstResponder() { 
    // set up the control state 
    return true 
    } 

    return false 
} 
0

textViewShouldBeginEditing thực sự kích hoạt trước khi chế độ xem văn bản trở thành trả lời đầu tiên.

textViewDidBeginEditing sẽ kích hoạt khi chế độ xem văn bản trở thành trả lời đầu tiên và sẽ là nơi tốt nhất để thực thi mã cần biết nội dung đang xem.

Nếu bạn không thực sự lo lắng về trường nào đang hoạt động và chỉ muốn xóa văn bản khi trường được nhấn vào bạn có thể sử dụng một trong hai hàm.

EDIT: Các phương thức tương tự có sẵn cho trường văn bản.

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