2011-11-11 14 views
25

Trong khi phát triển một tính năng gần đây cho ứng dụng iPad của tôi, tôi nhận ra rằng hành vi chia/tách bàn phím iOS5 mới đã gây ra các vấn đề lớn. Tôi sử dụng một inputAccessoryView cho bàn phím với một trường văn bản trên nó tương tự như tính năng tìm kiếm trên trang của Safari. Tôi hiển thị bàn phím trên một UIWebView có thể cuộn được, vì vậy một phần khó khăn của tôi đến từ việc có một UIWebview bị thu hẹp khi bàn phím được gắn và có một webview toàn màn hình (chủ yếu) khi nó được bỏ khóa. Các vấn đề chính mà tôi gặp phải với API là các thông báo UIKeyboardWillChangeFrameNotification và UIKeyboardDidChangeFrameNotification mới là một bước trở lại từ API trước đó tốt nhất, và có dữ liệu rác khiến cho gần như không thể hiểu bàn phím thực sự đang làm gì trong nhiều trường hợp.Có ai đã tìm thấy một cách hay để sử dụng các sự kiện bàn phím iOS5 mới không?

Có thể nhận ra bất kỳ hành vi bàn phím nào sau đây mà không kiểm tra khung hình bắt đầu/kết thúc một cách khắc nghiệt trở lại trên thông báo không?

  • Keyboard Undocks
  • Keyboard Docks
  • Keyboard Tách/Unsplits
  • undocked Keyboard Hiển
  • undocked Keyboard Hides
  • Xem quay trong khi bàn phím bị huỷ gắn

Tôi đã đưa ra một số trừu tượng để nhận ra các khung được gắn vào đế hoặc offscreen, nhưng ngay cả với điều đó, mã của tôi đang trở nên rất không thể quản lý được. Nếu bạn đã tìm ra cách tốt hơn để thực hiện việc này, vui lòng trả lời hoặc nhận xét. Tôi hy vọng tôi đang thiếu một cái gì đó ở đây. Cảm ơn.

+0

Đây là bản chất những gì tôi đã yêu cầu ở đây: http://stackoverflow.com/q/7799421/18091 (mặc dù câu hỏi của bạn là tốt hơn) – titaniumdecoy

Trả lời

4

Điều không phải là để suy nghĩ về điều này. Không có gì quan trọng đã thay đổi. Nếu bàn phím đi vào vị trí được gắn ở cuối màn hình, bạn sẽ nhận được thông báo "hiển thị". Nếu nó rời khỏi vị trí được gắn ở dưới cùng của màn hình, bạn sẽ nhận được thông báo "ẩn". Đó chính xác là những gì đã xảy ra trước iOS 5.

Sự khác biệt duy nhất là thay vì rời khỏi vị trí được cập nhật vì nó đang di chuyển ngoài màn hình, nó có thể rời khỏi vị trí được gắn đế vì người dùng đã hủy cài đặt. Bạn vẫn sẽ nhận được một "ẩn", vì vậy bạn có thể di chuyển giao diện của bạn trở lại vị trí cơ sở của nó. Bạn không cần phải biết rằng bàn phím bây giờ đã được bỏ khóa (mặc dù bạn có thể tìm ra rằng nó không phải là offscreen từ UIKeyboardDidChangeFrameNotification nếu bạn thực sự muốn). Lý do bạn không cần phải biết là khi bàn phím được bỏ/chia nhỏ, người dùng có thể chủ động và di chuyển bàn phím nếu nó đang theo cách cần phải được nhìn thấy.

Vì vậy, tất cả mã cũ của bạn từ trước iOS 5 tiếp tục hoạt động tốt. Đó là tất cả thực sự khá thông minh ...

+2

Nếu tôi không cố gắng để có của tôi giao diện làm bất cứ điều gì khác nhau, sau đó có, mã sẽ vẫn làm việc, không thay đổi. Khi tôi nói ở đầu câu hỏi, tôi đang thực hiện việc này với chế độ xem phụ kiện cho bàn phím. Chế độ xem phụ kiện này, ít nhất là cố gắng bắt chước hành vi của Safari, không quay trở lại dưới cùng của màn hình hoặc biến mất; nó sau bàn phím lên màn hình. Trong một số trường hợp, việc sử dụng mã hiện có không thực hiện được điều này và trong nhiều trường hợp, các vấn đề về trả lời phát sinh. – TahoeWolverine

+0

Khi tôi chia bàn phím, tôi nhận được cả một chương trình và một ẩn. Tại sao điều này? –

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