2013-01-24 19 views
16

Tôi có thể được thông báo khi nào UITextFieldbecomeFirstResponder?được thông báo khi UITextField trở thànhFirstResponder

tôi có thể kiểm tra như isFirstResponder hoặc thiết lập để trở thành Responder đầu bởi becomeFirstResponder

Tôi muốn nhận được thông báo hoặc xử lý sự kiện khi người dùng thực hiện lĩnh vực văn bản trả lời đầu tiên này.

Cảm ơn.

Trả lời

30

Bạn sẽ cần phải được đến đại biểu các trường văn bản và thực hiện phương pháp đại biểu tùy chọn này:

- (void)textFieldDidBeginEditing:(UITextField *)textField; 
11

Bên cạnh việc thực hiện các phương pháp UITextFieldDelegatetextFieldDidBeginEditing:, bạn có thể đăng ký tham gia thông báo UITextFieldTextDidBeginEditingNotification.

Phương pháp thông báo có thể là:

- (void)someTextFieldDidBeginEditing:(NSNotification *)notification { 
    UITextField *textField = (UITextField *)notification.object; 
} 
0

Đối với OSX bạn nên lưu ý các nút có tác dụng phụ khi dựa trên NSControlTextDidBeginEditingNotification.

Khi bạn bắt đầu chỉnh sửa, nhấn một số nút và tiếp tục chỉnh sửa trường văn bản, bạn sẽ không nhận được số thứ hai NSControlTextDidBeginEditingNotification khi bạn tiếp tục chỉnh sửa.

Trong trường hợp hành vi này gây ra sự cố, UITextFieldTextDidChangeNotification có thể là giải pháp thay thế.

2

Đại biểu chắc chắn là con đường để đi. Thật không may, trong tình huống của tôi tôi không thể sử dụng điều đó, bởi vì bộ điều khiển là đại biểu của lớp con UITextField của tôi và tôi cần sửa đổi văn bản giữ chỗ của nó. Thay vào đó, tôi ghi đè các phương pháp - (BOOL)canBecomeFirstResponder; & - (BOOL)resignFirstResponder;. Hãy chắc chắn để gọi siêu.

+0

Vâng, nhận xét của bạn để nhớ gọi siêu giải quyết được vấn đề của tôi. –