2009-12-08 33 views
10

Tôi có giao diện người dùng sạch đẹp trong chế độ xem bảng có một vài trường văn bản để người dùng điền vào. Một trong các trường là dành cho ngày sinh của người dùng.Làm cách nào để hiển thị UIDatePicker thay vì bàn phím khi người dùng chọn UITextField?

Tôi muốn có nó để khi người dùng chọn trường ngày sinh, chế độ xem chứa UIDatePicker sẽ xuất hiện, giống như các bàn phím khác nhau thực hiện khi chọn trường văn bản.

Việc này có thể thực hiện được không? Tôi sẽ phải ngăn chặn các trường văn bản từ là người trả lời đầu tiên (để tránh có bàn phím đi lên) và tôi sẽ phải animate xem xem trượt lên nếu không có bàn phím được hiển thị trước.

Trình bày chế độ xem có phải là một tùy chọn không? Nếu vậy làm thế nào tôi sẽ đi về làm việc đó? Từ tài liệu có vẻ như các chế độ xem vẫn còn chiếm toàn bộ màn hình, tôi chỉ muốn sử dụng 216 pixel thấp hơn (chiều cao của bàn phím và UIDatePicker).

Bất kỳ ai có bất kỳ mẹo nào về cách thực hiện việc này?

Trả lời

5

Tôi sẽ thực hiện điều này bằng cách chỉ tạo hoạt ảnh cho chế độ xem chứa nút UIDatePicker, nút Xong và Hủy) từ dưới cùng của màn hình. Sử dụng CoreAnimation, điều này khá dễ dàng.

+0

Tôi làm cách nào để thực hiện việc này? Tôi có một bộ điều khiển xem/xem được thiết kế trong IB, nhưng tôi không biết phải làm gì tiếp theo. Tôi có thêm chế độ xem dưới dạng chế độ xem phụ vào chế độ xem hiện được hiển thị không và sau đó tạo hiệu ứng động bằng cách nào đó? Tôi không chắc làm thế nào UIViews liên quan đến CALayers cho hoạt hình. –

+1

Nevermind. Tôi đã có thể tìm ra nó. Tôi thêm chế độ xem có chứa bộ chọn ngày vào cửa sổ và làm động nó bằng cách sử dụng một '[UIView beginAnimations]' block –

+0

Guys, xem giải pháp Oded Bex Dov ngay bên dưới. Miễn là bạn đang mã hóa cho iOS 3.2 trở lên, bạn có thể có khung làm việc động và quản lý bộ chọn cho bạn cùng với bàn phím. Chắc chắn là cách làm đúng. –

1

Tại sao bạn sử dụng trường văn bản nếu bạn không muốn chấp nhận đầu vào của người dùng từ bàn phím? Thay vào đó hãy sử dụng một lớp con UILabel (nơi bạn ghi đè lên touchesBegan/Ended: withEvent: tập hợp các phương thức để hiển thị UIDatePicker) hoặc một UIButton (nơi hành động của bạn là một phương thức trượt lên UIDatePicker).

7

Về hoạt hình, hãy nhìn vào ứng dụng mẫu DateCell - http://developer.apple.com/library/ios/#samplecode/DateCell/Introduction/Intro.html

Và trong mọi trường hợp, cách thích hợp để làm điều này được thiết lập inputView UITextField để hiển thị hộp thoại chọn thay vì bàn phím. Đó là những gì nó có nghĩa là để làm. Thêm vào đó ở đây: How can I present a picker view just like the keyboard does?

Chúc mừng,

Oded.

32

Câu hỏi cũ nhưng cách chính xác để thực hiện việc này trong những ngày này sẽ là đặt inputView của UITextField thành bộ chọn bạn đã tạo ở đâu đó. Một cái gì đó như thế này:

UIPickerView *myPicker = [[UIPickerView alloc] init]; 
// set picker frame, options, etc... 
// N.B. origin for the picker's frame should be 0,0 

[myTextField setInputView:myPicker]; 

Khi bạn đi để chỉnh sửa một UITextField, iOS thực sự chỉ hiển thị bất cứ điều gì xem là textField.inputView mà theo mặc định là bàn phím, bạn có thể làm cho nó bất cứ điều gì bạn muốn miễn là nó là một lớp con của UIView .

+3

Câu trả lời này phải được chấp nhận thay vì giải pháp "Hoạt ảnh UIView". Cảm ơn – klefevre

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