Xamarin iOS UISlider AddTarget EventHandler Нет параметра UIEvent - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь преобразовать какой-то быстрый код, который я обнаружил для определения, когда элемент управления UISlider перетаскивал большой палец, а затем, когда он заканчивался, в Xamarin.iOS C #.Но EventHandler для кода Xamarin.iOS не передает параметр UIEvent.

Swift:

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
 }

1 Ответ

0 голосов
/ 26 сентября 2018

В отличие от swift, 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");

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...