我正在尝试转换一些我找到的快速代码,用于检测UISlider控件何时开始拖动拇指,然后将其终止到Xamarin.iOS C#中。但是,用于EventHandler代码的Xamarin.iOS不传递UIEvent参数。
斯威夫特
slider.addTarget(self, action: #selector(onSliderValChanged(slider:event:)), for: .valueChanged)
@objc func onSliderValChanged(slider: UISlider, event: UIEvent) {
if let touchEvent = event.allTouches?.first {
switch touchEvent.phase {
case .began:
// handle drag began
case .moved:
// handle drag moved
case .ended:
// handle drag ended
default:
break
}
}
}C#
slider.AddTarget(HandleEventHandler, UIControlEvent.ValueChanged);
void HandleEventHandler(object sender, EventArgs e)
{
//TODO
}发布于 2018-09-26 02:35:48
与斯威夫特不同,xamarin.ios基于OC。UISlider单击事件不允许接受多个参数,唯一的参数是默认的UISlider本身。如果你想区分不同的状态。你可以在不同的州addTarget。
slider.AddTarget(this,new Selector("SliderValueChange:"),UIControlEvent.ValueChanged);
slider.AddTarget(this,new Selector("SliderTouchStart:"), UIControlEvent.TouchDown);
slider.AddTarget(this,new Selector("SliderTouchEnded:"), UIControlEvent.TouchUpInside);
[Export("SliderValueChange:")]
public void SliderValueChange(UISlider sender)
{
Console.WriteLine(sender.Value);
}
[Export("SliderTouchStart:")]
public void SliderTouchStart(UISlider sender)
{
Console.WriteLine("start");
}
[Export("SliderTouchEnded:")]
public void SliderTouchEnded(UISlider sender)
{
Console.WriteLine("end");
}https://stackoverflow.com/questions/52506382
复制相似问题