2010-04-07 29 views
12

Khi tôi tạo UITextField bên trong Trình tạo giao diện, tôi có thể truy cập tab Sự kiện cho nó, có các sự kiện như Thay đổi giá trị, Chạm hủy, Kéo chạm, v.v. Tôi có thể gán các phương thức của riêng mình cho mọi sự kiện đó. Làm thế nào tôi có thể làm như vậy, khi tôi tạo UITextField lập trình với phân bổ?Các sự kiện UiTextField

+0

Xin chào, tôi đã tạo UITextField trong Trình tạo giao diện và muốn đăng ký UIControlEventValueChanged. Làm thế nào để bạn đi về nó? Làm thế nào để bạn xác định hàm đó? – Namratha

Trả lời

14

Tham khảo tài liệu Apple cho UIControl. Sau khi khởi tạo textField của bạn, hãy gọi addTarget:action:forControlEvents:

ví dụ cho trường hợp cảm ứng kết thúc một phiên chỉnh sửa

[textField addTarget:self action:@selector(handleTouchValueChanged:) forControlEvents: UIControlEventEditingDidEnd] 
+0

cảm ơn, đã làm việc – Mike

+9

Điều này không có tác dụng, bạn cần sử dụng UIControlEventEditingChanged –

11

Thay vì UIControlEventValueChanged, bạn nên sử dụng UIControlEventEditingChanged:

[_titleTextField addTarget:self action:@selector(handleTitleValueChanged:) forControlEvents:UIControlEventEditingChanged]; 
+1

từ câu trả lời của hajikelist (thuộc về bình luận này thay vì tự trả lời): UIControlEventEditingChanged cháy bất cứ khi nào người dùng thay đổi giá trị [đồng bộ với gõ hoặc keyup] gây ra các lần truy cập bổ sung cho trình xử lý dữ liệu của bạn, nếu bạn đang lưu các giá trị dựa trên sự kiện đó, mong đợi nó là một loại giá trị cuối cùng từ đầu vào của người dùng ... (bạn có thể kết thúc với hành vi không mong muốn, như có nhiều lần lưu cho mỗi textfield.) – GeneralMike

3

UIControlEventEditingChanged cháy bất cứ khi nào người dùng thay đổi giá trị [ đồng bộ với nhập hoặc khóa phím] có thể gây ra các lần truy cập bổ sung vào thói quen xử lý dữ liệu của bạn, nếu bạn đang lưu các giá trị dựa trên sự kiện đó, hy vọng nó là một loại giá trị cuối cùng từ đầu vào của người dùng ...

+1

Một điểm tốt, nhưng có lẽ nên là một bình luận dưới một trong những câu trả lời khác thay vì câu trả lời, vì bạn không chỉ định một giải pháp thay thế cho những câu trả lời đó. – GeneralMike

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