我怎樣才能進入當前旋轉的UIPickerView
的瞬時值? (UISlider
有一個「連續」模式,但UIPickerView
還沒有。)從UIPickerView獲取連續數據?
任何想法的解決方法?或者我錯過了什麼?
我怎樣才能進入當前旋轉的UIPickerView
的瞬時值? (UISlider
有一個「連續」模式,但UIPickerView
還沒有。)從UIPickerView獲取連續數據?
任何想法的解決方法?或者我錯過了什麼?
爲UIPickerView委託只讓你選擇一個:
– pickerView:didSelectRow:inComponent:
你不會得到當拾取器在旋轉的事件,例如像一個你可以得到一個UIScrollView是當滾動。
恐怕有得到它
要從UIPickerView
獲得持續的數據沒有直接的方法,你只需要啓動一個定時器,並調用選擇器的selectedRow(inComponent:)
功能。
事情是這樣的......
class TextSettingsViewController: UIViewController {
@IBOutlet fileprivate weak var picker: UIPickerView!
weak var timer: Timer?
deinit {
timer?.invalidate()
}
override func viewDidLoad() {
super.viewDidLoad()
let timer = Timer(timeInterval: 0.1, repeats: true) { [unowned self] timer in
let row = self.picker.selectedRow(inComponent: 0)
print("selectedRow: \(row)")
}
// You need to add the timer to UITrackingRunLoopMode so it fires while scrolling the picker
let runLoop = RunLoop.current
runLoop.add(timer, forMode: .commonModes)
runLoop.add(timer, forMode: .UITrackingRunLoopMode)
self.timer = timer
}
}
這可以用CADisplayLink
@property (nonatomic, strong) CADisplayLink *displayLink;
self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)];
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:UITrackingRunLoopMode];
- (void) handleDisplayLink:(CADisplayLink *) displayLink
{
NSLog(@"%s %ld", __func__, [self selectedRowInComponent:0]);
}
@AntonioMG實現是正確的。除非您製作了自定義選擇器或查看第三方組件,否則無法繞過此**。如果你真的需要這個功能,你可能想看看[cocoacontrols.com](https://www.cocoacontrols.com/)。 –
這**是可能的 - 請參閱下面的答案 –