[英]Move UIImage along x- and y-axis
我用旋钮创建了一个控件。 该旋钮应该仅沿x轴和y轴移动。
我已经实现了以下方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
我知道,必须在touchMoved
实现限制沿一个轴的移动。 当我限制沿x轴的移动时,一切都会按预期进行。 但是,如何同时使y轴运动呢? 当启用所述第二轴,所述旋钮的移动并不局限于仅用于这种两轴。 这是touchMoved
实现的一部分:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint currentLocation = [touch locationInView:self.view];
CGPoint centerPoint = _triggerCap.center;
CGPoint selectionTriggerCenter = _selectionTrigger.center;
double distance = ({double d1 = centerPoint.x - selectionTriggerCenter.x, d2 = centerPoint.y - selectionTriggerCenter.y; sqrt(d1 * d1 + d2 * d2); });
if (distance < 100.0) {
if (fabsf(selectionTriggerCenter.y - currentLocation.y) > 5) {
centerPoint.y = currentLocation.y;
_triggerCap.center = centerPoint;
有人可以给我一个提示,如何仅允许沿这两个轴的运动吗?
我想到的最快的方法是,
在touchesBegan
,记录第一次在旋钮内的触摸的位置。 然后,在touchesMoved
,等到与第一次触摸之间的距离至少达到某个最小距离(也许15像素-播放并查看效果最好)。 检查是否在第一次触摸时沿x方向或y方向更远。 这将确定在当前触摸顺序的其余部分中应限制在哪个轴运动。 设置一个标志以指示该轴,然后从此开始,将已经用于限制运动的代码限制在单个轴上。 在touchesEnded
或旋钮返回到距轴的交点一定距离内时重置标志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.