单击未调用的 UICollectionViewCell 中的特定元素(而不是从 Source 触发的 ItemSelected)Xamarin.ios

Posted

技术标签:

【中文标题】单击未调用的 UICollectionViewCell 中的特定元素(而不是从 Source 触发的 ItemSelected)Xamarin.ios【英文标题】:Click on specific element in UICollectionViewCell not called(instead ItemSelected fired from Source) Xamarin.ios 【发布时间】:2019-08-23 09:51:06 【问题描述】:

我的 Xamarin.ios 项目中有一个 CollectionView。我的 UICollectionViewCell 中有一个按钮,我希望我的按钮上有 TouchDown。

但是当我点击这个按钮时,ItemSelected 被触发而不是我的 TouchDown 事件处理程序(调用单元格上的全局触摸而不是特定触摸)。

您能帮我如何在任何单元格内指定我的触摸吗? (对不起我的英语不是***)

这是我的代码:

class MyCollectionViewSource : UICollectionViewSource

    List<string> _Datas;

    public MyCollectionViewSource(List<string> datas)
    
        _Datas = datas;
    

    public override nint GetItemsCount(UICollectionView collectionView, nint section)
    
        return _Datas.Count;
    

    public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
    

        var view = (MyCollectionViewCell)collectionView.DequeueReusableCell(MyCollectionViewCell.CellId, indexPath);
        return view;
    

    public override void ItemSelected(UICollectionView collectionView, NSIndexPath indexPath)
    
        Console.WriteLine("Row 0 selected", indexPath.Row);
    

    public override bool ShouldSelectItem(UICollectionView collectionView, NSIndexPath indexPath)
    
        return true;
    


class MyCollectionViewCell : UICollectionViewCell

    UIView _MyCellView;

    public static readonly NSString CellId = new NSString("MyCollectionViewCell");

    [Export("initWithFrame:")]
    MyCollectionViewCell(RectangleF frame) : base(frame)
    
        _MyCellView = new UIView();
        ContentView.AddSubview(_MyCellView);

        UIButton btn = new UIButton();
        btn.SetTitle("test", UIControlState.Normal);
        btn.Frame = new CoreGraphics.CGRect(0, 0, 100, 20);
        btn.TouchDown += Btn_TouchDown;

        _MyCellView.AddSubview(btn);

    

    private void Btn_TouchDown(object sender, EventArgs e)
    

    

【问题讨论】:

【参考方案1】:

如果要设置Button的点击事件。活动名称是

btn.TouchUpInside += Btn_TouchUpInside;

事件TouchDown会在你点击按钮但没有收回你的手指时被调用。

【讨论】:

首先,谢谢您是对的,但即使使用 TouchUpInside 也无法正常工作 分享你的样品,我会在我这边进行测试。

以上是关于单击未调用的 UICollectionViewCell 中的特定元素(而不是从 Source 触发的 ItemSelected)Xamarin.ios的主要内容,如果未能解决你的问题,请参考以下文章

未调用列表视图中的 xamarin 项目单击

使用 JQuery 的 JavaScript 中的下拉菜单未调用单击事件

jQuery单击和跟随功能未被调用

当我在列表中使用复选框时未调用列表项单击方法

回发后未调用模态对话框的 onshow

在 UICollectionView 单元格中单击 WKWebView 会导致未调用回调