首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS UISlider AddTarget EventHandler无UIEvent参数

iOS UISlider AddTarget EventHandler无UIEvent参数
EN

Stack Overflow用户
提问于 2018-09-25 20:41:08
回答 1查看 342关注 0票数 1

我正在尝试转换一些我找到的快速代码,用于检测UISlider控件何时开始拖动拇指,然后将其终止到Xamarin.iOS C#中。但是,用于EventHandler代码的Xamarin.iOS不传递UIEvent参数。

斯威夫特

代码语言:javascript
复制
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#

代码语言:javascript
复制
 slider.AddTarget(HandleEventHandler, UIControlEvent.ValueChanged);

 void HandleEventHandler(object sender, EventArgs e)
 {
    //TODO
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 02:35:48

与斯威夫特不同,xamarin.ios基于OC。UISlider单击事件不允许接受多个参数,唯一的参数是默认的UISlider本身。如果你想区分不同的状态。你可以在不同的州addTarget

代码语言:javascript
复制
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");

 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52506382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档