UIPickerView: получить значение строки во время вращения? - PullRequest
7 голосов
/ 02 октября 2009

Я хотел бы получить значение строки в режиме реального времени, поскольку пользователь iPhone крутит колесо в UIPickerView (а не только когда колесо садится на конкретную строку). Я изучил создание подкласса UIPickerView, а затем переопределил метод mouseDown, но не смог заставить это работать. Будем очень благодарны за любые предложения.

Ответы [ 3 ]

11 голосов
/ 02 октября 2009

Возможно, попробуйте реализовать метод делегата:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

Вы можете рассматривать его как проход (просто передавая параметр reusingView), но каждый раз, когда он вызывается, вы будете знать, что представление появляется на экранекак пользователь прокручивал - тогда вы можете рассчитать, сколько смещений просмотров от этого центра было.

0 голосов
/ 13 ноября 2014

Вы можете найти UIScrollView в иерархии UIPickerView следующим способом:

func findScrollView(view:UIView) -> UIScrollView? {
    if view is UIScrollView {
        return view as? UIScrollView
    }
    for subview in view.subviews {
        if subview is UIView {
            let result = findScrollView(subview as UIView)
            if result != nil {
                return result
            }
        }
    }
    return nil
}

Реализация и настройка UIScrollViewDelegate:

let scrollView = findScrollView(pickerView)
if scrollView != nil {
    scrollView!.delegate = self
}

И определить текущий выбранный пункт:

func scrollViewDidScroll(scrollView: UIScrollView) {
    let offset = scrollView.contentOffset.y
    let index = Int(offset/itemHeight)
    if index >= 0 && index < items.count {
        let item = items[index]
        // do something with item
    }
}
0 голосов
/ 02 октября 2009

Размеры UIPickerView довольно постоянны. Вместо того, чтобы разделить его на подклассы, возможно, вы могли бы наложить собственное UIView поверх вида средства выбора, из которого вы можете отслеживать и измерять движения перетаскивания, прежде чем передавать эти касания в представление средства выбора.

...