我正在尝试创建一个允许用户在图像上移动框架的应用程序,以便我可以在选定区域上应用一些效果。
我需要允许用户精确地拖动和缩放图像上的蒙版框架。我需要准确地说,就像任何其他照片应用程序一样。
我的策略是在触摸移动事件上获取用户的接触点,并相应地缩放我的框架。那很直观。我编写了以下代码来处理触摸移动事件:
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:[self view]];
float currX = touchPoint.x;
float currY = touchPoint.y;
/*proceed with other operations on currX and currY,
which is coming out quite well*/
}
但唯一的问题是,currX
和currY
变量的坐标并不完全在它们应该在的位置。存在视差错误,不断从设备转移到设备。我还认为在 iPad 的情况下 x 和 y 坐标会被交换。
你能帮我弄清楚如何获得确切的触摸坐标吗?
我的背景图像在一个视图 ( imageBG
) 中,而蒙版框架在一个单独的视图 ( maskBG
) 中。我试过了:
CGPoint touchPoint = [touch locationInView:[maskBG view]];
和
CGPoint touchPoint = [touch locationInView:[imageBG view]];
...但同样的问题仍然存在。我还注意到 iPad 上的触摸错误比 iPhone 或 iPod 上的更严重。