确定UIPickerWheel是否正在滚动

时间:2011-03-14 21:32:32

标签: cocoa-touch ios uikit uipickerview

嘿,有没有办法确定UIPickerView目前正在滚动,我真的需要我的应用程序的功能,这非常重要。谢谢!

2 个答案:

答案 0 :(得分:0)

有一个UIPickerViewDelegate方法,每次滚动选择器时都会触发该方法

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

设置选择器的委托,实现此方法,看看会发生什么......

[编辑]好了,我知道你需要什么。 实现一个计时器,检查选择器的状态。

checkTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(checkPicker) userInfo:nil repeats:YES];

在上面的委托方法中,存储上次移动选择器的时间。

lastPickerDate = [[NSDate date] retain];
checkPicker方法中的

检查从上次移动开始经过的时间

NSTimeInterval timeSinceMove = -[lastPickerDate timeIntervalSinceNow];

如果timeSinceMove大于某个所需的值,即0.5秒,则将BOOL pickerMoving设置为false。否则将其设置为true。这不是检查运动的最精确方法,但我认为它应该起作用......

答案 1 :(得分:0)

有一个技巧可以检测到这个但是没有委托方法/属性来检测它是否滚动

  1. 以isScrolling
  2. 取得财产
  3. func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?或等效方法
  4. 中将isScrolling设置为true
  5. func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
  6. 中将isScrolling设置为true

    希望这会有所帮助