繁体   English   中英

沿x和y轴移动UIImage

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM