UIPickerView внутри UITableView.tableFooterView не получает перетаскивания - PullRequest
4 голосов
/ 06 января 2011

У меня есть UIPickerView в нижнем колонтитуле таблицы (из которого я планирую выдавать запросы в стиле "pagination" для таблицы - средство выбора выведет список страниц, доступных из НАБОРНОГО набора данных LARGE, по которому я перемещаюсь, и пусть пользователь сразу переходит на любую «страницу» данных).

Мой сборщик получает сигналы; если я нажму на ряд сборщика, который не выбран, он катится в центральное пространство сборщика. Но если я тяну палец на сборщик, я прокручиваю ТАБЛИЦУ, а не содержимое сборщика.

Я попытался установить подкласс UIView в моем tableFooterView, чтобы посмотреть, могу ли я поймать касания, и могу ли я ... но не касания в средстве выбора. Прикосновения Вокруг сборщика фактически вызывают то, что подкласс UIView -touchesBegan. Но не на самом сборщике.

1 Ответ

8 голосов
/ 06 января 2011

Вот что получилось.

Я превратил свою таблицу в подкласс UITableView (называемый PickerSensitiveUITableView).

Я реализовал этот метод:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView* result = [super hitTest:point withEvent:event];

    if ([result.superview isKindOfClass:[UIPickerView class]])
    {
          self.scrollEnabled = NO;
    }
    else 
    {
          self.scrollEnabled = YES;    
    }
    return result;
}

Так что теперь, когда касание происходит внутри границ средства выбора (фактически ЛЮБОГО средства выбора в таблице!), Оно отключает прокручиваемость UITableView.

Мне кажется, что более общим решением было бы сделать это как категорию в UIScrollView. Проблема не столько в таблицах, сколько в UIScrollView, что UITableView является подклассом ...

...