You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.iOS F#中ItemSelected方法未触发的问题求助

解决UICollectionView单元格点击无响应的问题

你的F# Xamarin.iOS代码里,UICollectionView的ItemSelected方法没触发,我来帮你排查几个常见的原因和修复方案:

  • 检查单元格的用户交互状态
    确保你的UICollectionViewCell的UserInteractionEnabled属性是true(默认值是true,但有时候会被意外修改)。如果是自定义Cell,可以在初始化或AwakeFromNib方法里明确设置:

    override x.AwakeFromNib() =
        base.AwakeFromNib()
        x.UserInteractionEnabled <- true
    
  • 修正自定义Delegate的初始化方式
    你当前用new CollectionViewFlowDelegate(new IntPtr())创建Delegate实例,这种带IntPtr的构造函数通常是Xamarin内部用来绑定原生对象的,手动传入空指针可能导致Delegate无法正确初始化。建议改用无参构造(你的类型已经注册了[<Register>]属性,支持无参构造):

    let collectionViewDelegate = new CollectionViewFlowDelegate()
    
  • 确认UICollectionView的选择权限
    检查你的UICollectionView的AllowsSelection属性是否为true,如果这个属性被设为false,点击事件根本不会触发:

    x.CollectionView.AllowsSelection <- true
    
  • 排查是否有视图拦截点击
    如果单元格上方存在其他UIView(比如透明遮罩),且该视图的UserInteractionEnabled为true,点击事件会被上层视图拦截。检查Cell的布局结构,确保没有这类遮挡视图。

  • 验证Delegate是否正确绑定
    在ViewDidLoad赋值Delegate后,可以加个断点或日志,确认x.CollectionView.Delegate确实指向了你的collectionViewDelegate实例,避免赋值后被其他代码覆盖。

另外提个小细节:创建ChatControllerLandlord时,同样建议使用无参构造而非传入空IntPtr,避免控制器初始化异常导致PresentViewController无法执行。

内容的提问来源于stack exchange,提问作者Alk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:29:11