[英]Xamarin forms bindings not working in ios renderer
I wrote custom control: 我写了自定义控件:
public class ExtendedImage : View
{
public string SourceStart { get; set; }
public string SourceComplete { get; set; }
}
When I use it on my pcl project, I add to him tapGestureRecognizer. 当我在pcl项目上使用它时,我向他添加了tapGestureRecognizer。 This recognizer has bindable command:
该识别器具有可绑定的命令:
var image = new ExtendedImage()
{
SourceStart = "im1.png"),
SourceComplete = "im2.png"),
};
var tap = new TapGestureRecognizer();
tap.SetBinding(TapGestureRecognizer.CommandProperty, "imageCommand");
image.GestureRecognizers.Add(tap);
And I have ImageRenderer: 我有ImageRenderer:
public class iOSImageRenderer : ViewRenderer<ExtendedImage, UIImageView>
{
UIImageView image { get; set; }
string SourceStart { get; set; }
string SourceComplete { get; set; }
protected override void OnElementChanged(ElementChangedEventArgs<ExtendedImage> e)
{
base.OnElementChanged(e);
if(e.OldElement != null || this.Element == null)
return;
SourceStart = Element.SourceStart;
SourceComplete = Element.SourceComplete;
image = new UIImageView(UIImage.FromFile(SourceStart));
image.UserInteractionEnabled = true;
SetNativeControl(image);
}
public override void TouchesBegan(NSSet touches, UIEvent evt)
{
base.TouchesBegan(touches, evt);
UITouch touch = touches.AnyObject as UITouch;
if(touch != null)
{
image.Image = UIImage.FromFile(SourceComplete);
}
}
public override void TouchesEnded(NSSet touches, UIEvent evt)
{
base.TouchesBegan(touches, evt);
UITouch touch = touches.AnyObject as UITouch;
if(touch != null)
{
image.Image = UIImage.FromFile(SourceStart);
}
}
}
And bindable recognizer not working for this solution. 并且可绑定识别器不适用于此解决方案。 I have the same renderer for windowsPhone, and it works perfectly.
我有相同的WindowsPhone渲染器,并且效果很好。 For android I don't check yet.
对于android,我暂不检查。 How I can bind this command in ios renderer, or how I can fix this issue?
如何在ios渲染器中绑定此命令,或者如何解决此问题?
I suspect your TouchesBegan
/ TouchesEnded
gets in the way of the UITapGestureRecognizer
. 我怀疑您的
TouchesBegan
/ TouchesEnded
妨碍了UITapGestureRecognizer
。
You should start by fixing your TouchesEnded
implementation so it calls base.TouchesEnded
instead of base.TouchesBegan
. 您应该首先修复
TouchesEnded
实现,以便它调用base.TouchesEnded
而不是base.TouchesBegan
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.