【问题标题】:Trying to move UIImageView, moving whole Screen View试图移动 UIImageView,移动整个屏幕视图
【发布时间】:2014-07-23 19:03:59
【问题描述】:

我希望我的 UIViewImages 可以通过触摸移动。我正在尝试使用在我的 ViewController 中实现的代码:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    if ([touches count]==1) {
        UITouch *touch = [touches anyObject];
        CGPoint p0 = [touch previousLocationInView:self.view];
        CGPoint p1 = [touch locationInView:self.view];
        CGPoint center = self.view.center;
        center.x += p1.x - p0.x;
        center.y += p1.y - p0.y;
        self.view.center = center;
    }
}

当我尝试拖动 UIImageView 时,我正在拖动整个屏幕,这是不正确的。 需要帮助!

卡罗尔

【问题讨论】:

    标签: ios objective-c uiimageview


    【解决方案1】:

    您创建一个手势识别器并将其添加到如下视图中:

    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRecognizerMethod:)];
    [self.imageView addGestureRecognizer:panGestureRecognizer];
    

    你可以调整图像视图的位置

    - (void)gestureRecognizerMethod:(UIPanGestureRecognizer *)recogniser
    {
        if (recognizer.state == UIGestureRecognizerStateBegan || recognizer.state == UIGestureRecognizerStateChanged)
        {
            CGPoint touchLocation = [recognizer locationInView:self.view];
            self.imageView.center = touchLocation;
        }
    }
    

    read这篇文章。

    【讨论】:

    • 感谢您的反馈。我已经尝试过这个 - 这是一个简洁的解决方案,它工作正常,但它迫使我使用已经分配给一个 UIImageViews 的 self.imageView,而我想使用多个,我希望识别器能够检测到哪个图像被点击并拖动。或者我错过了什么,我错了?
    • 已经找到解决方案,谢谢。我遇到的问题是在 ViewController 中使用 touchesBegan 和 touchesMoved - 我将它移到了我创建的新类中,该类派生自 UIImageView。此外,我必须重写 canBecomeFirstResponder 函数,使其返回 YES;我在 viewDidLoad 中将 userInteractionEnabled 属性设置为 YES。我找到的解决方案可以在这里找到,很好地解释了:link
    【解决方案2】:

    如果我正确阅读了您的代码 self.view 实际上是整个屏幕。 也许您的意思是 self.yourImageView?

    【讨论】:

    • 该死,你是对的……有没有办法获得对被触摸对象的引用?我想要多个 UIImageViews 并用手指移动它们。
    • 当然 - 您的图像视图已经是参考...如果您想在代码中的任何位置访问它,请为其创建一个属性。如果您使用 IB / Storyboard,只需控制从图像视图到标题的拖动,Xcode 将为您创建出口。之后,您可以使用 self.someImageView 引用它
    • Daxesh Nagar 为您写了一个更好的答案。
    猜你喜欢
    • 2014-10-16
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多