小编Alb*_*ert的帖子

如何控制 UISlider Value Changed-events 频率?

我正在编写一个 iPhone 应用程序,它使用两个 uislider 来控制使用 coreBluetooth 发送的值。如果我快速移动滑块,一个值会在接收器处冻结,大概是因为 Value Changed 事件触发得太频繁,以至于写入命令堆积起来并最终被丢弃。如何确保事件不会触发太频繁?

编辑:

这是对问题的澄清;蓝牙连接每 105 毫秒发送一次命令。如果用户在这段时间内产生了一堆事件,他们似乎在排队。我想扔掉连接事件之间生成的任何值,每 105 毫秒发送一个。

这基本上就是我现在正在做的事情:

-(IBAction) sliderChanged:(UISlider *)sender{

  static int8_t value = 0;
  int8_t new_value = (int8_t)sender.value;

  if ( new_value > value + threshold || new_value < value - threshold ) {
    value = new_value;  
    [btDevice writeValue:value];
  }
}
Run Code Online (Sandbox Code Playgroud)

我要问的是如何实现类似的东西

-(IBAction) sliderChanged:(UISlider *)sender{

  static int8_t value = 0;

  if (105msHasPassed) {
    int8_t new_value = (int8_t)sender.value;

    if ( new_value > value + threshold || new_value < value - threshold …
Run Code Online (Sandbox Code Playgroud)

iphone time uislider ios core-bluetooth

5
推荐指数
1
解决办法
3497
查看次数

标签 统计

core-bluetooth ×1

ios ×1

iphone ×1

time ×1

uislider ×1