Почему нижняя половина настраиваемого UIActionSheet с UIDatePicker отключена?

Кажется, все отлично работает с моим UIActionSheet, который содержит UIDatePicker, за исключением того, что нижняя половина DatePicker отключена. Визуально есть тень, которая делает нижнюю половину палитры темнее верхней. Все в нижней половине отключено, и я не могу понять, как это включить.

Я также заметил, что в других моих «обычных» таблицах UIActionSheets, которые содержат только кнопки, нижняя половина кнопок отмены отключена.

Это код для моего настраиваемого UIActionSheet:

self.datePickerView = [[UIDatePicker alloc] init];
self.datePickerView.datePickerMode = UIDatePickerModeDate;

self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose a Follow-up Date"
                   delegate:self cancelButtonTitle:nil 
                   destructiveButtonTitle:nil otherButtonTitles:@"Done", nil];

[self.actionSheet showInView:self.view];
[self.actionSheet addSubview:self.datePickerView];
[self.actionSheet sendSubviewToBack:self.datePickerView];
[self.actionSheet setBounds:CGRectMake(0,0,320, 500)];

CGRect pickerRect = self.datePickerView.bounds;
pickerRect.origin.y = -95;
self.datePickerView.bounds = pickerRect;

Я пробовал несколько вещей, включая sendSubviewToBack, BringSubviewToFront и т. Д., Но мне не повезло. Я ценю вашу помощь!

Вот скриншот. Я добавил красные квадраты для пояснения. http://gorgando.com/UIActionSheet%20Problem.png


person Brad    schedule 15.06.2010    source источник


Ответы (2)


Убедитесь, что вы показываете лист действий с соответствующим _ 1_ функция - у меня была аналогичная проблема при отображении листа действий из UITabBar; поэтому в данном случае используется UIActionSheet метод -showFromTabBar:.

person petert    schedule 16.06.2010
comment
Спасибо за предложение. Я только что попробовал это [self.actionSheet showFromTabBar: self.tabBarController.tabBar]; вместо моего предыдущего [self.actionSheet showInView: self.tabBarController.view]; Я получил точно такой же результат. Я думаю, что проблема должна быть связана с самим UIActionSheet, который блокирует эту нижнюю часть от взаимодействия с пользователем. - person Brad; 16.06.2010
comment
Я перечитал твой вопрос. Намного лучше добавить средство выбора даты и т. Д. В UIView и вручную анимировать его вверх и вниз из нижней части экрана. У меня никогда не было успеха с UIActionSheet, используемым таким образом. Не думаю, что Apple предложит это. - person petert; 17.06.2010
comment
Я сделал то, что вы предложили, с помощью UIView. Спасибо! - person Brad; 24.06.2010
comment
Хорошо. Этот блог подтолкнул меня в правильном направлении: ramin.firoozye.com/2009/09/29/ - person petert; 25.06.2010

Попробуйте установить рамку в UIDatePicker вместо границ. Я думаю, у вас происходят какие-то странные вещи, когда вы устанавливаете начало координат на -95, чтобы его позиционировать.

person Reed Olsen    schedule 15.06.2010
comment
У меня это сработало ... но с рамкой нужно идти +95, а не -95. - person Chris; 10.05.2011
comment
Хороший ответ. Лист действий находится в середине анимации, когда вы устанавливаете границы после showInView. Он уже рассчитал конечный центр, и установка границ не обновляет его. Установка рамки (которая устанавливает и центр, и границы) делает. - person smparkes; 29.10.2011