UIDatePicker прерывается при использовании UIDatePickerMode.DateAndTime - PullRequest
0 голосов
/ 01 декабря 2011

Я создаю приложение с Monotouch 5, и у меня возникает проблема с созданием средства выбора даты в режиме UIDatePickerMode.DateAndTime на iOS 4.3 или ниже при запуске моего приложения в iPad Simulator. DatePicker всегда не работает, хотя размеры, которые я установил для его рамки и окружающего вида, совершенно нормальны.

Вот так выглядит симулятор iPad с iOS 4.3:

http://screencast.com/t/isIRcUcKCF5

и вот как это выглядит на iPad Simulator с iOS 5.0:

http://screencast.com/t/UxPTpR0Btzb

Эта проблема не возникает на симуляторах iPhone или реальных устройствах. Я знаю, что это также не происходит на реальных устройствах iPad с iOS 5, но я не смог протестировать 4.3 или ниже, потому что у меня нет такого устройства.

Исходный код для создания выбора даты выглядит следующим образом:

public override void Selected (MonoTouch.Dialog.DialogViewController dvc, UITableView tableView, NSIndexPath path)
        {
            var vc = new MyViewController (this) {
                Autorotate = dvc.Autorotate
            };
            datePicker = CreatePicker ();
            datePicker.Frame = PickerFrameWithSize (datePicker.SizeThatFits (SizeF.Empty));
            //vc.View encompasses the entire, screen so there is plenty of space available for the date picker                           
            vc.View.BackgroundColor = UIColor.Black;
            vc.View.AddSubview (datePicker);
            dvc.ActivateController (vc);
        }


public virtual UIDatePicker CreatePicker ()
    {
        var picker = new UIDatePicker (RectangleF.Empty){
            AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
            Mode = UIDatePickerMode.DateAndTime,
            Date = DateValue,
        };

        return picker;
    }

    static RectangleF PickerFrameWithSize (SizeF size)
    {                                                                                                                                   
        var screenRect = UIScreen.MainScreen.ApplicationFrame;
        float fY = 0, fX = 0;

        switch (UIApplication.SharedApplication.StatusBarOrientation){
        case UIInterfaceOrientation.LandscapeLeft:
        case UIInterfaceOrientation.LandscapeRight:
            fX = (screenRect.Height - size.Width) /2;
            fY = (screenRect.Width - size.Height) / 2 -17;
            break;

        case UIInterfaceOrientation.Portrait:
        case UIInterfaceOrientation.PortraitUpsideDown:
            fX = (screenRect.Width - size.Width) / 2;
            fY = (screenRect.Height - size.Height) / 2 - 25;
            break;
        }
        // calculated values:
        // fx: 224
        // fy: 369
        // size.Width: 320
        // size.Height: 320
        return new RectangleF (fX, fY, size.Width, size.Height);
    }  

Когда я использую средство выбора даты в режимах UIDatePickerMode.Date или UIDatePickerMode.Time, проблема не возникает.

Проблема выглядит как пустым UIDatePicker на iPad в режиме UIDatePickerModeDateAndTime , но описанное там исправление не работает в моем случае по какой-то странной причине.

Будем весьма благодарны за любые подсказки, как обойти эту ошибку.

Спасибо

Адриан

1 Ответ

0 голосов
/ 03 декабря 2011

Я до сих пор не знаю, как заставить работать приведенный выше код, но мне удалось обойти эту ошибку iOS, используя вместо этого UIPopupView для отображения календаря.

...