2012-04-10 28 views
11

Tôi đã đặt một tuỳ chỉnh inputView thành UITextField của mình. Tôi cần một cách để hiển thị dữ liệu được chọn trong tuỳ chỉnh inputView trong UITextfield. Tôi muốn đạt được điều này giống như cách bàn phím hệ thống làm điều đó.Custom inputView cho UITextField, làm cách nào để trực tiếp nhập lại trường văn bản?

Có ai biết cách thực hiện việc này không? Làm thế nào để bàn phím hệ thống có được một tham chiếu đến UITextfield đó là người trả lời đầu tiên?

+0

hãy chính xác hơn, ý bạn là gì khi "nhập trực tiếp trở lại trường văn bản"? Bạn muốn tập trung vào UITextField? – Dion

+0

Xin lỗi, tôi nghĩ tôi đã chính xác hơn trong lời giải thích của mình. Những gì tôi có nghĩa là, tôi đặt thuộc tính inputView trên một UITextField để xem đầu vào tùy chỉnh của tôi. Vì vậy, khi người dùng nhấn một nút trên inputView tùy chỉnh của tôi, làm thế nào để tôi có được một tham chiếu đến UITextfield là trả lời đầu tiên hiện tại để tôi có thể thay đổi thuộc tính văn bản của UITextfield đó để phản ánh đầu vào của người dùng? –

Trả lời

12

Bàn phím hệ thống có thể tham chiếu đến UITextfield là người trả lời đầu tiên như thế nào?

Nó chỉ yêu cầu hệ thống trả lời đầu tiên; Thật không may, đó là một phương pháp UIKit riêng (hoặc là, cuối cùng tôi đã kiểm tra). Bạn có thể tìm thấy phần trả lời đầu tiên bằng cách đệ quy thông qua phân cấp khung nhìn và hỏi mỗi lượt xem, nhưng điều đó khá vụng về.

Thay vào đó, bạn có thể thêm một liên kết đến các lĩnh vực văn bản trên quan điểm đầu vào (Tôi giả định quan điểm đầu vào của bạn là một lớp con tùy chỉnh UIView):

@property(nonatomic, assign) UITextField* target; 

Sau đó sử dụng phương pháp đại biểu UITextField theo quan điểm của bạn điều khiển để xem khi nào trường văn bản đang được tập trung:

- (void)textFieldDidBeginEditing:(UITextField*)textField 
{ 
    if ([textField.inputView isKindOfClass:[MyInputView class]]) 
     ((MyInputView*)textField.inputView).target = textField; 
} 

- (void)textFieldDidEndEditing:(UITextField*)textField 
{ 
    if ([textField.inputView isKindOfClass:[MyInputView class]]) 
     ((MyInputView*)textField.inputView).target = nil; 
} 
+0

Câu trả lời tuyệt vời dave, đó là chính xác những gì tôi đang tìm kiếm, cảm ơn. –

10

khi gửi đầu vào từ cái nhìn đầu vào tùy chỉnh của bạn trở lại textfield, lưu ý rằng bạn có thể (nên) sử dụng các phương pháp UIKeyInput giao thức UITextField phù hợp với. Cụ thể:

- (void)deleteBackward; 
- (void)insertText:(NSString *)text; 
Các vấn đề liên quan