2011-06-26 22 views
0

如何在我的iPhone應用程序中使用UIScrollView內的UIDatePicker。我無法滾動選擇器上的日期,因爲它認爲我的手指正在控制UIScrollView。我試圖添加一個UIDatePicker到我的UIScrollView,這是我的UIViewController裏面。UIScrollView內的UIDatePicker - iPhone應用程序

+0

你能說明你正在使用什麼平臺,或者你正在使用什麼語言? –

+0

iOS - objective C – CodeGuy

回答

1

經過幾次試驗後,我發現這個問題的最佳解決方案是對包含日期選擇器的滾動視圖進行子類化,並進行命中測試以查看用戶是否嘗試觸摸選取器。我發現並修改了這個問題的下面的代碼UIDatePicker inside UIScrollView with pages

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView* result = [super hitTest:point withEvent:event]; 
    if ([result.superview isKindOfClass:[UIPickerView class]] || [result.superview isKindOfClass:[UIDatePicker class]]) 
    { 
     self.canCancelContentTouches = NO; 
     self.delaysContentTouches = NO; 
    } 
    else 
    { 
     self.canCancelContentTouches = YES; // (or restore bool from prev value if needed) 
     self.delaysContentTouches = YES; // (same as above) 
    } 
    return result; 
} 
3

您可以嘗試將滾動視圖的delaysContentTouches屬性設置爲NO。

不過,更好的做法是重新考慮你的用戶界面。日期選取器佔用小型設備的大約一半的屏幕。即使您可以讓日期選擇器滾動而不是滾動視圖,您也可以將用戶置於難以滾動滾動視圖的位置。他們必須弄清楚,如果他們想要滾動滾動視圖,他們需要接觸選擇器的上方或下方......它不會很好用。

一種解決方案可能是讓用戶點擊日期,然後用日期選擇器呈現模態視圖控制器。這會讓用戶選擇一個新的日期,而不會對滾動產生任何歧義。

+0

+1 @Caleb對滾動困難是正確的,儘管這是我最終不得不忍受的事情。 – Rog

0

另一個解決方案是從底部向上彈出,當你想從選擇器中選擇數據。添加到你的視圖(self.view)。