2012-10-07 37 views
6

Tôi có bảng phân cảnh, bao gồm điều hướng giữa các chế độ xem. Trở lại và ra, và đó cũng là khả năng để nhảy tất cả các cách để màn hình chủ.trở thànhFirstResponder không hiển thị bàn phím thứ hai (ios 6 + bảng phân cảnh)

Về cơ bản, nó hoạt động như thế này:

  • Xem 1 cho thấy một menu đơn giản.
  • Chế độ xem 2 hiển thị các trường nhập và tự động hiển thị bàn phím.
  • Xem 3 hiển thị bảng kết quả. Trong chế độ xem này, người ta có thể quay lại một bước (để xem 2) hoặc quay lại màn hình chính (xem 1).

Bàn phím và mọi thứ hoạt động hoàn hảo lần đầu tiên khi người dùng di chuyển từ chế độ xem 1 sang chế độ xem 2. Tuy nhiên, khi di chuyển trở lại từ chế độ xem 3 đến chế độ xem 2 hoặc từ chế độ xem 3 và bắt đầu lại từ đầu, bàn phím không hiển thị.

Trong mã, tôi đã trở thànhFirstResponder trong phương thức viewDidAppear. Ngoài ra, nó sẽ từ chứcFirstResponder khi tải view 3. Một thực tế thú vị khác là khi gọi hàm returnFirstResponder lần thứ hai, nó trả về NO (trong khi nó trả về YES lần đầu tiên). Ngoài ra, khi quay trở lại chế độ xem này, các trường văn bản không thể chọn, mặc dù chúng là userInteractionEnabled.

Tôi thực sự bị kẹt ở đây, vì vậy mọi trợ giúp đều được đánh giá cao. Tôi đã thấy một số câu hỏi tương tự như thế này, nhưng không tìm thấy một giải pháp:

+0

có ai đã giải quyết vấn đề này không? Tôi đã xem xét tất cả và cố gắng một loạt các điều, nhưng không có gì hoạt động .. bàn phím sẽ chỉ hiển thị 1 lần cho mỗi uitextfield – user353877

Trả lời

7

tôi đã có thể theo dõi vấn đề trong mã của tôi. Tự trả lời câu hỏi này vì nó cũng có thể hữu ích cho người khác.

Vấn đề của tôi là tôi không thực sự nhận được thứ tự các sự kiện chính xác. Tôi đã có một nút sẽ di chuyển đến trường văn bản tiếp theo và nếu mọi thứ đã được hoàn thành, nó sẽ chuyển sang màn hình tiếp theo. Điều này làm cho phương thức trở thànhFirstResponder được gọi và không được phát hành (resignFirstResponder) khi chuyển sang một màn hình mới.

Tôi đoán lời khuyên chính tôi có thể đưa ra (ít nhất là những gì cuối cùng đã làm việc cho tôi), là chỉ cần đi qua tất cả các trở thànhFirstResponder và chắc chắn rằng nó được phát hành trước khi chuyển sang màn hình tiếp theo.

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