2014-06-19 15 views
0

所以我尝试了Xamarin Forms,并且我做了一个控制,它有一个输出UICollectionView的渲染器。有问题的集合视图是从Objective C版本移植而来的。在Objective C版本中,我实现了collectionView:didSelectItemAtIndexPath:,并且当我点击该方法被调用的项目时。但在Xamarin版本中,这似乎不是这种情况,并且不调用ItemSelected方法。我试过使用DelegateWeakDelegate版本都无济于事。我确信AllowsSelection是真的。没有项目在我的UICollectionView中选择呼叫?

我试着给单元添加一个UIButton,并且能够从它的TouchUpInside处理程序中获取一个日志条目,所以我不认为这是另一个顶级的偷看触摸问题的问题。平底锅和这样的工作。在模拟器中,我突出了绘制的图层,没有发现任何可疑的东西。

任何人有任何想法的东西尝试?谢谢。

回答

1

ColelctionView.DataSource我没有最终解决这个问题。发生的事情是,Xamarin.Forms添加一个手势识别器到页面的根部,取消页面中的触摸。这在一般情况下运作良好,但在UICollectionView s的情况下效果不佳,因为它干扰UICollectionView呼叫ItemSelected

我最终什么事做的是创建这个定制渲染:

public class IosTapFixPageRenderer : PageRenderer { 
    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     foreach (var g in View.GestureRecognizers) { 
      g.CancelsTouchesInView = false; 
     } 
    } 
} 

然后我分配这个作为渲染包含使用通常的属性的方法UICollectionView小号问题网页:

[assembly: ExportRenderer(typeof(CalendarPage), typeof(IosTapFixPageRenderer))] 
1

我不知道这是否可以帮助你,但我使用Xamarin.Forms.Labs的GridView控件得到同样的问题。

我看到在委托中,方法“ItemSelected”没有被调用,而是调用“ItemHighlighted”方法。所以我使用它来使GridView selectitem工作。

我希望这可以是有益的。 :)

+0

不幸的是ItemHighlighted也不起作用。我在https://bugzilla.xamarin.com/show_bug.cgi?id=21177上将它标记为Xamarin的Bugzilla数据库中的一个错误。 –

+0

如果你想看看,我的解决方案被添加到Xamarin.Froms.Labs的GridView控件。也许阅读完整的代码可以帮助您找到解决方案:https://github.com/XForms/Xamarin-Forms-Labs/issues/236 – BadStorm

0

仔细检查您已经分配UICollectionViewSource对象ColelctionView.Source和错误