2012-01-17 12 views
7

Tôi đang sử dụng cửa sổ bật lên để hiển thị biểu mẫu xem bảng có kích thước iPhone (khớp với ứng dụng iPhone của tôi). Bên trong bảng, tôi có một trường văn bản có bộ chọn làm chế độ xem đầu vào. Khi nó được sử dụng theo cách này như một iPad bộ chọn trượt lên như bàn phím iPad. Có anyway để thiết lập các bộ chọn để trượt lên trong popover giống như nó sẽ trên iPhone?Bộ chọn như inputview bên trong cửa sổ bật lên

+0

kiểm tra điều này .http: //stackoverflow.com/questions/9988165/hide-uipickerview-on-done-button-in-uitableview-solved – hacker

Trả lời

1

Bạn không thể thực hiện việc này trực tiếp (dưới dạng inputView). Nhưng bạn chắc chắn có thể sử dụng tác phẩm đơn giản này xung quanh:

  1. Thay bạn UITextField với UIButton và kết nối nó với một số selector (buttonClicked :). Bạn có thể sử dụng UIButtonTypeCustom để có thể phong nó để nó trông giống như trường văn bản (layer set của bordeColor, borderWidth, cornerRadius, vv ..)

  2. trong -(void)buttonClicked:(id)sender - chuyển đổi các UIPickerView cùng bạn sẽ sử dụng như inputView cho thay UITextField. Bạn có thể thực hiện trong biến cá thể thông thường, chỉ cần nhớ đặt delegate và DataSource. Đính kèm nó vào chế độ xem gốc (trong số UIViewController hiển thị trong cửa sổ bật lên) hoặc thậm chí UIWindow và tạo hiệu ứng động vào hoặc ra (chuyển đổi) tùy thuộc vào việc nó đã được hiển thị hay chưa.

  3. cập nhật nút của văn bản (bằng cách sử dụng [button setTitle:<selected_value> forState:UIControlStateNormal]) trong UIPickerViewDelegate phương pháp: pickerView: didSelect ... atIndex: `- bạn bổ sung có thể ẩn bảng chọn ở đây ..

Tôi đã làm nó nhiều lần, nó luôn hoạt động trong mọi trường hợp và bạn có toàn quyền kiểm soát về cách thức và nơi bộ chọn được hiển thị mà không cần liên quan đến chuỗi UIResponder.

Không tìm thấy giải pháp tốt hơn cho những trường hợp đặc biệt như vậy (bàn phím iPad thích điều khiển các cửa sổ bật lên cũng - nó đẩy chúng lên).