【问题标题】:What event fires when a UISlider is dragged all the way to the end?当 UISlider 一直拖到最后时会触发什么事件?
【发布时间】:2014-01-29 21:01:41
【问题描述】:

我的视图中有一个 UISlider。

_seekBar = new UISlider
{
    MinValue = 0,
    Continuous = false,
    AutoresizingMask = UIViewAutoresizing.FlexibleWidth
};
_seekBar.TouchDown += OnTouchDown;
_seekBar.TouchDragInside += OnDragInside;
_seekBar.ValueChanged += OnValueChanged; 

我已将三个事件设置如下。

private void OnTouchDown(object sender, EventArgs e)
{
    // pause the watcher when you touch down
    _audioPlayerService.Pause();
}

private void OnDragInside(object sender, EventArgs e)
{
    // basically updates the number next to the slider as you drag
    _viewModel.CurrentPositionMsec = (int)_seekBar.Value;
}

private void OnValueChanged(object sender, EventArgs e)
{
    _viewModel.UserSeekPosition = (int)_seekBar.Value;

    if (_viewModel.SeekToCommand.CanExecute())
        _viewModel.SeekToCommand.Execute(_viewModel);

    _audioPlayerService.Start();
}

注意:观察者基本上是观察音频播放器并报告进度。

我遇到的问题是,如果我将滑块一直拖到最后(最右边),即使没有释放任何东西,我也会开始出现奇怪的行为。

  • 尝试重新拖动不会停止观察者
  • 滑块开始在我的拇指位置和观看的当前进度之间跳跃。
  • 音频卡顿并跳到曲目的末尾。

除非我松开滑块,否则当我将拇指滑到最后时,我不希望发生任何事情。

注意:如果我不一直寻找到最后,一切都会按预期进行

当 UISlider 被拖到最后时会触发什么事件?

【问题讨论】:

    标签: ios uikit xamarin


    【解决方案1】:

    “除非我松开滑块,否则当我将拇指滑到最后时,我不希望发生任何事情”

    这样做。它只会在触摸被释放后触发。

    _seekBar.continuous = NO;
    

    【讨论】:

    • 是的,如果您查看第一个代码块,我就有了。因为我使用的是 Xamarin,所以它是 C#。
    • 我认为没有任何方法可以检查滑块是否已达到结束/最大值。您可以做的是检查滑块的 OnValueChanged 值是否小于指定的最大值
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 2012-01-14
    • 2018-05-11
    • 2011-03-21
    • 1970-01-01
    • 2017-07-12
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多