UISlider 的 editingDidEnd 事件在 iPad 中不起作用

Posted

技术标签:

【中文标题】UISlider 的 editingDidEnd 事件在 iPad 中不起作用【英文标题】:UISlider's editingDidEnd event is not working in iPad 【发布时间】:2011-05-02 09:32:59 【问题描述】:

我想在滑动 UISlider 结束时触发一种方法。我在 xib 中使用了 UISlider 的“editingDidEnd”事件并将其附加到 IBAction 方法,但该方法没有被调用。谁能帮我知道UISlider 什么时候结束滑动?

【问题讨论】:

【参考方案1】:

您可以附加到“UIControlEventValueChanged”滑块事件,并在事件处理程序中使用以下代码:

  [slider addTarget:self action:@selector(handleValueChanged:event:) forControlEvents:UIControlEventValueChanged];

- (void)handleValueChanged:(id)sender event:(id)event 
     UITouch *touchEvent = [[event allTouches] anyObject]; // there's only one touch
     if (touchEvent.phase == UITouchPhaseEnded)  /* place your code here */ 

【讨论】:

这不是 OP 要求的。【参考方案2】:

UISlider 继承自 UIControl,因此您应该能够在“UIControlEventTouchUpInside”上添加和操作

尝试类似:

[slider addTarget:self action:@selector(sliderTouchUpInsideAction:) forControlEvents:UIControlEventTouchUpInside];

希望这会有所帮助, 文森特

【讨论】:

好的这种方法会在触摸发生时触发我的方法,但我想知道滑块上的触摸何时结束。 当您抬起手指而手指仍在控件边界内时,会触发内部触摸,因此问题一定出在其他地方:“控件中的触摸事件手指在控件的边界内。” 顺便说一句,您可能还想检测 touchUpOutside - 因为这也表示编辑结束 - 滑块不像按钮(在外部触摸意味着您已经放弃了操作)

以上是关于UISlider 的 editingDidEnd 事件在 iPad 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UISlider的基本使用方法

UISlider 损坏

UISlider

设置 UISlider

UISlider 带标签怎么调用?

UIProgressView和UISlider