2010-05-20 47 views
17

iPad bàn phím ảo sẽ biến mất trong một số (ít nhất) những 3 trường hợp:Phát hiện ẩn bàn phím iPad so với bàn phím bên ngoài có kết nối không?

  1. Nếu sự kiểm soát (ví dụ, một UITextField) lập trình từ chức responder đầu tiên.
  2. Nếu người dùng nhấn vào nút "loại bỏ bàn phím" ở phía dưới bên phải.
  3. Nếu người dùng kết nối với đế cắm USB/bàn phím ngoại vi.

Trong mọi trường hợp, tôi nhận được UIKeyboardWillHideNotification.

Vấn đề là hai trường hợp đầu tiên thường tương đương - nói cách khác, người dùng đã hoàn tất chỉnh sửa trường văn bản. Nhưng trong trường hợp thứ ba, trường văn bản vẫn đang được chỉnh sửa, chỉ từ một nguồn đầu vào khác.

Sự cố đang phát hiện sự khác biệt giữa các trường hợp 2 và 3. Tất cả những gì tôi nhận được trong cả hai trường hợp là UIKeyboardWillHideNotification. Trong trường hợp 2, tôi thường muốn khóa điều khiển chỉnh sửa và cam kết giá trị. Trong trường hợp 3, tôi thường không muốn làm gì và cho phép chỉnh sửa để tiếp tục.

Nhưng làm cách nào tôi có thể biết sự khác biệt?

Ứng dụng Trang của Apple dường như có thể phân biệt được việc đổi tên tài liệu.

Trả lời

2

Tôi sẽ xem UIKeyboardBoundsUserInfoKey được thông báo. Bàn phím vật lý có thể có các giới hạn trống.

+0

Đáng tiếc là không có. Bàn phím vật lý không tạo ra UIKeyboardWillShowNotification khi nó xuất hiện. Việc gắn nó chỉ tạo ra một thông báo WillHide tương ứng với thông báo ảo. –

+0

Trong trường hợp 1, điều khiển mất tiêu điểm. Điều này cũng đúng trong trường hợp 2? Tôi giả định trong trường hợp 3 kiểm soát vẫn giữ được trọng tâm. – drawnonward

+0

Trong trường hợp 2 và 3, điều khiển tiếp tục là firstResponder. Từ chức trả lời đầu tiên sẽ loại bỏ bàn phím, nhưng ngược lại không rõ ràng là đúng. –

2

Có vẻ như bạn đang cố gắng tìm ra thời điểm người dùng chỉnh sửa xong. Bạn có thể nghe thông báo UITextFieldTextDidEndEditingNotification cho các trường hợp 1 và 2.

Một giải pháp đơn giản hơn sẽ không thể bạn chỉ cần kiểm tra thuộc tính editing của UITextField để xác định xem nó có còn phải chỉnh sửa hay không? Tôi không có bàn phím vật lý, vì vậy tôi không có cách nào để kiểm tra điều này. Tôi chỉ đang đoán thôi.

Dưới đây là một liên kết đến tài liệu hướng dẫn về sở hữu rằng: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/occ/instp/UITextField/editing

Tôi rất tò mò muốn biết nếu làm việc này hay không ... :)

+0

Đối với trường hợp số 2, trường văn bản vẫn đang chỉnh sửa và nó vẫn là phần trả lời đầu tiên. Không có bàn phím. –

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