iphone - UIPanGestureRecognizer - View 在拖动时消失

标签 iphone ios objective-c

我在使用 UIPanGestureRecognizer 从屏幕顶部移动 View 时遇到一个奇怪的问题。一切在模拟器中运行完美,但在实际设备上,当我触摸它时, View 消失了。

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {

    CGPoint start;

    if (recognizer.state == UIGestureRecognizerStateBegan) {
        start = [recognizer translationInView:self.view];
        originCenter = recognizer.view.center.y;
    }

    if (recognizer.state == UIGestureRecognizerStateChanged) {
        CGPoint translation = [recognizer translationInView:self.view];
        if (down) {
            if (originCenter + translation.y < self.view.center.y && self.view.center.y + translation.y < self.view.center.y) {
                CGPoint move = CGPointMake(self.view.frame.size.width/2, originCenter-(start.y-translation.y));
                [recognizer.view setCenter:move];
            }
        }else{
            if (originCenter + translation.y < self.view.center.y && originCenter + translation.y > originCenter) {
                CGPoint move = CGPointMake(self.view.frame.size.width/2, originCenter-(start.y-translation.y));
                [recognizer.view setCenter:move];
            }
        }
    }

    if([recognizer state] == UIGestureRecognizerStateEnded  || [recognizer state] == UIGestureRecognizerStateCancelled ){
        if(recognizer.view.center.y > -40){

            [recognizer.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

            down = TRUE;
        }else{

            [recognizer.view setFrame:CGRectMake(0, 80-self.view.frame.size.height, self.view.frame.size.width, self.view.frame.size.height)];

            down = FALSE;
        }
    }
}

我想到一件事,计算设备上的位置可能存在问题,并且 View 移到了屏幕之外。这可能吗?

最佳答案

如果不出意外,您应该将 start 设为 static 或 ivar。否则,当您点击 UIGestureRecognizerStateChanged 时,start 将不会保留它在 UIGestureRecognizerStateBegan 期间的值。

关于iphone - UIPanGestureRecognizer - View 在拖动时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18025003/

相关文章:

iphone - 英语语言的本地化显示名称不起作用

iphone - iOS6.0及以上版本ZBar条码阅读器隐藏信息按钮的方法

objective-c - 如何定期调用 objective-c 中的方法?

objective-c - 添加具有透明背景的行

objective-c - UIImageView 和窗口方向问题

iphone - 识别 UIImageView 区域中透明像素的百分比

iphone - 如何在 iphone 的 uitableview 中只显示前 5 个单元格

iphone - uiwebview 子类中的按住复制

ios - isEqualToArray或isEqualToDictionary可以比较多深?

ios - CIFilter在运行时确定inputKey参数类型