Я создаю приложение с 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 , но описанное там исправление не работает в моем случае по какой-то странной причине.
Будем весьма благодарны за любые подсказки, как обойти эту ошибку.
Спасибо
Адриан