ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#-捕获用户触摸的x和y,iOS Xamarin Forms

2019-11-11 13:16:36  阅读:280  来源: 互联网

标签:xamarin-forms xamarin-ios c


我正在使用Xamarin Forms(Xamarin Studio社区)来编写iOS应用.我只需要捕获用户触摸的坐标并释放按钮即可.

我已经在整个Google上进行了搜索,但只找到了根本不起作用的回复.它们要么用于Android,要么用于Swift,或者用于XCode,或者用于实际使用的方式太多.

我所看到的最接近的答案是:“当前在Xamarin Forms中无法做到这一点.”在我看来这很荒谬,因为它似乎是程序员需要的最基本,最基本的东西之一.

我需要做的就是捕获用户触摸并释放的x,y.这是我的管理员都准备好了.

    thisHereButton.TouchDown += (object sender, System.EventArgs e) =>
    {
        //pressed
        touchX = [x];
        touchY=[y];
    };
     thisHereButton.TouchUpInside += (object sender, System.EventArgs e) =>
    {
        //released
        releaseX = [x];
        releaseY=[y];
    }; 

而已.如果有人可以提供简单实用的答案,那就太好了!

编辑:悬赏额外的研究,希望有人可以帮助.

我按照注释中的建议进行了分析,并确定这是最相关的代码块.

private bool touchStartedInside;
        public override void TouchesMoved(NSSet touches, UIEvent evt)
        {
            base.TouchesMoved(touches, evt);
            // get the touch
            UITouch touch = touches.AnyObject as UITouch;
            if (touch != null)
            {
                //==== IMAGE TOUCH
                if (backdrop.Frame.Contains(touch.LocationInView(View)))
                {
                    //TouchStatus.Text = "Touches Moved";
                }

                //==== IMAGE DRAG
                // check to see if the touch started in the drag me image
                if (touchStartedInside)
                {
                    // move the shape
                    float offsetX = (float)(touch.PreviousLocationInView(View).X - touch.LocationInView(View).X);
                    float offsetY = (float)(touch.PreviousLocationInView(View).Y - touch.LocationInView(View).Y);
                    txt_sizeValText.Text = "" + offsetY;
                    //DragImage.Frame = new RectangleF(new PointF(DragImage.Frame.X - offsetX, DragImage.Frame.Y - offsetY), DragImage.Frame.Size);
                }
         }
        }  

这直接取自他们的例子.在代码中,它为我提供了我想要的东西,以及最终我真正需要的“补偿”的好处.
因此,我的代码中存在这个空白,并且代码仍然可以编译,因此没有错误.

我唯一不知道的是如何利用这个空白.你怎么称呼它?
如果我必须使用与原始帖子中不同的处理程序,那很好.无论您如何告诉我如何进行这项工作…

解决方法:

您无需调用TouchesMoved()方法.在Objective C运行时调用它时会自动调用它(它是要调用的方法的替代)-基本上是本机事件的处理程序.您已经可以获取偏移量,并且可以在该方法内引发自己的事件以更改按钮.已经完成了.

标签:xamarin-forms,xamarin-ios,c
来源: https://codeday.me/bug/20191111/2020229.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有