2009-06-24 40 views
6

Tôi đã di chuyển chế độ xem cảnh báo cao hơn một chút để tôi có thể vừa với bàn phím trên màn hình. Tôi chỉ làm điều này bằng cách lấy khung cảnh báo và thay đổi Y sau khi tôi đã hiển thị cảnh báo sao cho các biến khung là hợp lệ. Điều này làm việc tốt trên giả lập, nhưng khi tôi làm điều này trên phần cứng, cảnh báo bắt đầu ở vị trí chính xác nhưng sau đó gần như ngay lập tức nhảy xuống đến vị trí trung tâm ban đầu dọc của nó. Là vị trí UIAlertView một điều cố định mà không phải là thay đổi theo hướng dẫn khả năng sử dụng hoặc tôi chỉ làm một cái gì đó không chính xác?Tôi có thể di chuyển UIAlertView không?

Cảm ơn!

Trả lời

22

Bạn đang thử hệ điều hành nào? Tôi có này để làm việc trên cả Simulator OS 3.0 và OS 3.0 Device:

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
         delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ]; 

alert.transform = CGAffineTransformTranslate(alert.transform, 0.0, 100.0); 

[ alert show ]; 

CGAffineTransformTranslate mất ba đối số: chuyển đổi hiện có, một x biến đổi, và một y biến đổi. Trong ví dụ tôi đã sử dụng, chế độ xem cảnh báo xuất hiện cao hơn 100 pixel so với bình thường. Hãy thử điều này và xem điều gì xảy ra.

Ngoài ra, tôi chắc chắn bạn có thể sửa đổi khung trước khi hiển thị cảnh báo vì có khả năng thiết lập khung cảnh báo theo mặc định là init làm trung tâm của toàn bộ màn hình.

+0

Cảm ơn biến đổi đã làm các trick, vì lý do nào đó di chuyển nó bằng cách sử dụng tọa độ khung là vấn đề. – Skyler

+0

nó làm việc cho tôi trong ios 3.0, nhưng đối với một số lý do nó không hoạt động trong ios 4.0 .... –

1

Không phải là cảnh báo có nghĩa là modal - tức là: bạn thường sẽ không thực hiện bất kỳ thao tác nhập nào của người dùng khác trong khi cảnh báo đang hoạt động? Nếu đây là trường hợp thì tại sao bạn sẽ cần khả năng hiển thị của bàn phím?

+3

Nếu anh ta có trường văn bản được thêm làm chế độ xem phụ của chế độ xem cảnh báo, bạn có thể thấy bàn phím giống như App Store khi nó nhắc bạn nhập mật khẩu iTunes trước khi tải xuống ứng dụng. – LucasTizma

+0

Cảm ơn nhận xét - Tôi đã không nghĩ về kịch bản đó. – teabot

2

Vì iOS4 di chuyển xung quanh UIAlertViews trở nên phức tạp. Tôi đã nhận thấy rằng nếu bạn thêm một subview UITextField trên UIAlertView, trên iOS4 cảnh báo được di chuyển lên để bàn phím không chồng lên nhau. Điều này không xảy ra < iOS4. Tôi cũng nhận thấy rằng khung cảnh báo không được khởi tạo ngay cả sau khi chương trình được gọi, vì vậy không có cách nào dễ dàng để lập trình CGAffineTransformation tương đối. Giải pháp duy nhất là thực hiện các phép biến đổi có điều kiện dựa trên phiên bản hệ điều hành.

Đối với tôi, điều này có vẻ giống như luồng trên hành vi không có giấy tờ của UIAlertViews có thể thay đổi bất kỳ lúc nào. Tôi không nghĩ rằng Apple có nghĩa là chúng ta sẽ sử dụng các cảnh báo cho bất cứ điều gì nhiều hơn văn bản và các nút (mặc dù các ứng dụng riêng của họ phá vỡ quy tắc này).

Tôi cho một người sẽ bắt đầu tạo cảnh báo tùy chỉnh của riêng mình cho loại tình huống này.

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