3
在Xamarin.Forms中,我希望能够左右滑动浏览图片列表。目前我只想在每次检测到滑动时都能触发一个事件。在渲染器中使用Xamarin UISwipeGestureRecognizer渲染器
子类:
public class LRMasterDetailPage : ContentView
{
}
我有一个使用LRM类这样的ContentPage:
public class ImagePage : ContentPage
{
public ImagePage(Photo photo)
{
_image = new WebImage
{
Url = photo.Url,
Placeholder = "placeHolder2.png"
};
var imageView = new LRMasterDetailPage {
Content = _image
};
this.Content = imageView;
}
}
这是我的渲染:
[assembly:ExportRenderer (typeof(LRMasterDetailPage), typeof(LRMDPRenderer))]
namespace Project.iOS
{
public class LRMDPRenderer : ViewRenderer<LRMasterDetailPage,UIView>
{
UISwipeGestureRecognizer swipe;
protected override void OnElementChanged (ElementChangedEventArgs<LRMasterDetailPage> e)
{
base.OnElementChanged (e);
// Do someting else, init for example
swipe = new UISwipeGestureRecognizer();
this.AddGestureRecognizer (swipe);
if (swipe.Direction == UISwipeGestureRecognizerDirection.Left)
{
UpdateLeft();
}
if (swipe.Direction == UISwipeGestureRecognizerDirection.Right)
{
UpdateRight();
}
}
protected override void OnElementPropertyChanged (object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Renderer")
return;
base.OnElementPropertyChanged (sender, e);
}
private void UpdateLeft(){
// Insert view of DetailLeft element into subview
// Add button to open Detail to parent navbar, if not yet there
// Add gesture recognizer for left swipe
Console.WriteLine ("Left swipe");
}
private void UpdateRight(){
// same as for left, but flipped
Console.WriteLine ("Right swipe");
}
}
}
当ContentPage显示时,向右滑动事件被激活,但是当我尝试在顶部滑动时没有任何反应图片。我猜测我对渲染器的逻辑错误?
拥有一个像你有没有得到完成布线了UpdateLeft和UpdateRight功能?看看你是如何从这里更新视图会非常有帮助:) @ScarletMerlin –
我将编辑答案在几分钟内显示完整的代码。我所做的只是发送一条消息,说更新右/左。 – ScarletMerlin
非常感谢! –