2013-04-17 27 views
5

Tôi có giao diện với trường văn bản, hình ảnh và một vài nút. Tôi muốn đảm bảo rằng bàn phím được hiển thị và ở trên cùng khi chế độ xem được hiển thị VÀ Tôi muốn đảm bảo rằng nó không biến mất sau khi tôi nhập nội dung vào trường văn bản và gửi nó.Giữ bàn phím luôn ở trên cùng và hiển thị

Tôi gọi là [txtField becomeFirstResponder] với chế độ xem và bàn phím xuất hiện theo mặc định nhưng có một chút chậm trễ sau khi chế độ xem được hiển thị.

Đồng thời người trả lời cũng không giúp được gì sau khi tôi đã gửi trường văn bản của mình.

Cảm ơn trước sự giúp đỡ của bạn!

Trả lời

4

Đồng thời người trả lời cũng không giúp gì sau khi tôi đã gửi trường văn bản của mình.

Phần đó không có ý nghĩa. Theo mặc định, trường văn bản không loại bỏ bàn phím trừ khi bạn loại bỏ nó bằng endEditing: hoặc resignFirstResponder. Nếu bàn phím biến mất, bạn phải là làm cho bị mất. Vì vậy, không và nó sẽ không.

EDIT: Và thực sự, nhận xét của bạn sau đó sẽ tiết lộ câu trả lời: bạn đã kết nối sự kiện kiểm soát didEndOnExit từ trường văn bản. Vâng, điều đó khiến bàn phím bị loại bỏ khi người dùng nhấn nút Xong! Vì vậy, bạn có hiệu quả đánh mình vào mặt và sau đó phàn nàn rằng ai đó đang đánh bạn vào mặt.

Vì vậy, giải pháp rõ ràng là không kết nối sự kiện kiểm soát didEndOnExit (với bất kỳ sự kiện nào). Thay vào đó, chỉ cần cung cấp cho các trường văn bản một đại biểu và sử dụng các tin nhắn đại biểu để tìm hiểu những gì người dùng đang làm. Không ai trong số đó có bất kỳ hành vi tự động nào liên quan đến bàn phím, vì vậy bàn phím sẽ không bị loại bỏ tự động. Ví dụ: để tìm hiểu thời điểm người dùng nhập, sử dụng textField:shouldChangeCharactersInRange:replacementString:. Để tìm hiểu thời điểm người dùng đã nhấn nút Xong, hãy sử dụng textFieldShouldReturn:. Và cứ thế.

+0

Đúng, didEndOnExit được liên kết với IBAction đang kiểm tra văn bản nhập của người dùng. Tuy nhiên nếu tôi không liên kết nó đã làmEndOnExit, làm thế nào tôi có thể biết khi nào người dùng gõ xong và nhấn nút xong? Về cơ bản tôi muốn đạt được điều này: 1. Bàn phím hiển thị khi cửa sổ được tải 2. Người dùng điền vào trường văn bản, nhấn nút DONE hoặc nút khác tôi đặt bên cạnh trường 3. Mã của tôi kiểm tra để xem nếu chuỗi đúng và thực hiện một số hành động 4. Trong khi tiêu điểm vẫn nằm trong trường văn bản và bàn phím vẫn hiển thị – user2292949

+0

Yup, tốt, đừng làm vậy. Bản thân bạn đang làm điều mà bạn đang phàn nàn. Vì vậy, chỉ cần ngừng làm việc đó và vấn đề sẽ biến mất. Xem câu trả lời đã chỉnh sửa của tôi. – matt

+0

Cảm ơn, đó có vẻ là câu trả lời tôi đang tìm kiếm. Tôi sẽ cập nhật mã và mục nhập của mình sau khi hoàn thành những gì tôi định làm. Về việc đánh vào mặt mình; Tôi có thể sẽ làm điều đó một lúc, vì tôi chỉ bắt đầu phát triển IOS và OOP. – user2292949