【发布时间】:2016-05-16 13:46:10
【问题描述】:
我想通了。 对于任何需要这个的人。请参阅以下内容。 看了一百万次Xamarin Evolve 之后,我就明白了。
class LoginButtonCustomRenderer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
{
base.OnElementChanged(e);
Android.Widget.Button thisButton = Control as Android.Widget.Button;
thisButton.Touch += (object sender, TouchEventArgs e2) =>
{
if (e2.Event.Action == MotionEventActions.Down)
{
System.Diagnostics.Debug.WriteLine("TouchDownEvent");
// Had to use the e.NewElement
e.NewElement.Image = "pressed.png";
}
else if (e2.Event.Action == MotionEventActions.Up)
{
System.Diagnostics.Debug.WriteLine("TouchUpEvent");
}
};
}
}
【问题讨论】:
-
别忘了
thisButton.Touch -= ...否则你会有一些内存泄漏 -
谢谢。我忘记了。
-
我们应该什么时候做
thisButton.Touch -= ...??? -
@JonathanMoss xamarin 按钮的 Click 事件在此实现后停止工作,仅适用于 android,不适用于 iOS。此外,android 点击事件按钮动画也不再起作用。你有什么解决办法吗?
-
嗯,点击事件是Touch down,然后是Touch up。注册 Touch 事件时,它正在被处理,因此不会触发 click 事件。解决方法是设置 e.Handled = false;在 Touch 事件中。
标签: xaml xamarin custom-controls