2010-06-15 45 views
2

除了DatePicker的下半部分被禁用之外,一切似乎都與我的包含UIDatePicker的UIActionSheet一起工作得很好。在視覺上有一個陰影,使得選取器的下半部分比上半部分更暗。下半部分的所有內容都是禁用的,我不能在我的生活中弄清楚如何啓用它。爲什麼禁用了UIDatePicker的自定義UIActionSheet的底部一半?

我也注意到在我的其他「常規」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等,但我沒有任何運氣。我感謝您的幫助!

下面是截圖。我添加了紅框來澄清。 alt text http://gorgando.com/UIActionSheet%20Problem.png

回答

1

請確保您顯示您的行動表與適當的showXXX函數 - 我有一個類似的問題,當顯示一個UITabBar的行動表;所以在這種情況下使用UIActionSheet方法-showFromTabBar:

+0

感謝您的建議。我剛剛嘗試過[self.actionSheet showFromTabBar:self.tabBarController.tabBar];而不是我以前的[self.actionSheet showInView:self.tabBarController.view];我得到了完全相同的結果。我認爲問題必須與UIActionSheet本身阻止底部允許用戶交互。 – Brad 2010-06-16 18:39:45

+1

我重新讀你是問題。將日期選擇器等添加到UIView並從屏幕底部向上和向下手動設置動畫效果會更好。我從來沒有以這種方式使用UIActionSheet取得成功。不要認爲蘋果會提出這個建議。 – petert 2010-06-16 20:33:12

+0

我做了你用UIView建議的。謝謝! – Brad 2010-06-24 19:32:52

6

嘗試在您的UIDatePicker而不是邊界上設置框架。當你將原點設置爲-95來定位它時,我認爲你有一些奇怪的東西正在發生。

+0

這對我來說很有效...但是你必須去+95與框架,而不是-95。 – Chris 2011-05-09 20:47:28

+0

很好的答案。當您在showInView之後設置界限時,操作表是中等動畫。它已經計算出最終的中心,並且設置邊界不會更新它。設置框架(設置中心和邊界)。 – smparkes 2011-10-29 14:58:01