微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 iOS 中是否有等效于 xamarin.android DispatchTouchEvent()

如何解决在 iOS 中是否有等效于 xamarin.android DispatchTouchEvent()

我正在制作一个网格,将其触摸事件发送给其子项(因此我可以将不同的滚动视图附加到一起滚动)

我为 android 制作了这个自定义渲染器

public class ScrollableGridRenderer : VieWrenderer
{
    ScrollableGrid? _control;
    bool _elementChanged;

    readonly IList<Android.Views.View> _children;

    public ScrollableGridRenderer(Context context) : base(context)
    {
        _children = new List<Android.Views.View>();
    }

    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.View> e)
    {
        base.OnElementChanged(e);

        if (e.NewElement is ScrollableGrid element)
        {
            _control = element;
            _elementChanged = true;
        }
    }

    public override bool OnInterceptTouchEvent(MotionEvent ev)
    {
        if (_control == null) return false;
        if (!_elementChanged) return true;
        _children.Clear();
        for (int i = 0; i < _control.Children.Count; i++)
        {
            Android.Views.View? child = GetChildAt(i);
            if (child != null) _children.Add(child);
        }
        _elementChanged = false;
        return true;
    
    public override bool OnTouchEvent(MotionEvent? ev)
    {
        if (_control == null) return true;
        foreach (Android.Views.View child in _children)
        {
            child.dispatchTouchEvent(ev);
        }
        return true;
    }
}

正如你所看到的,我所做的就是列出网格的孩子,然后向前发送触摸事件(我还没有尝试包括按钮或任何手势识别器,但我知道它们可能会如何搞砸,我不包括它们,我的测试表明,对于静态数据,它工作得很好!否则,如果将滚动视图方向设置为水平,则它不起作用,但这无关紧要)

我的问题是如何用 iOS 做同样的事情?

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。