UIDatePicker внутри UIScrollView - приложение для iPhone - PullRequest
0 голосов
/ 26 июня 2011

Как я могу использовать UIDatePicker внутри UIScrollView в моем приложении для iPhone. Я не могу прокрутить даты на сборщике, потому что он думает, что мой палец контролирует UIScrollView вместо этого. Я пытаюсь добавить UIDatePicker в свой UIScrollView, который находится внутри моего UIViewController.

Ответы [ 3 ]

3 голосов
/ 26 июня 2011

Вы можете попробовать установить для свойства delaysContentTouches представления прокрутки значение NO.

Лучше было бы переосмыслить свой интерфейс. Средство выбора даты занимает около половины экрана на небольшом устройстве. Даже если вы можете заставить средство выбора даты прокручивать вместо представления прокрутки, вы поставите пользователя в положение, в котором будет трудно прокручивать представление прокрутки. Им придется выяснить, что им нужно дотронуться до или ниже средства выбора, если они хотят прокрутить представление прокрутки ... это просто не будет хорошо использовать.

Одним из решений может быть предоставление пользователю возможности нажать на дату, а затем представить контроллер модального представления со средством выбора даты. Это позволило бы пользователю выбрать новую дату без какой-либо двусмысленности при прокрутке.

1 голос
/ 26 июня 2011

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

- (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;
}
0 голосов
/ 26 июня 2011

другое решение - вынуть его снизу вверх, если вы хотите выбрать данные из палитры.добавить к вашему виду (self.view).

...