【问题标题】:UIPanGestureRecognizer stops working when when panned up, not when panned downUIPanGestureRecognizer 在向上平移时停止工作,而不是在向下平移时停止工作
【发布时间】:2013-07-24 13:45:03
【问题描述】:

我基本上是在这里创建一个屏幕调光器。我在屏幕上放置了一个黑色视图,并使用 UIPanGestureRecognizer 根据用户是向上还是向下滚动来调整不透明度。代码如下:

- (IBAction)dimScreen:(UIPanGestureRecognizer *)sender {
    //Get translation
    CGPoint translation = [sender translationInView:self.view];
    CGFloat distance = translation.y;

    //add a fraction of the translation to the alpha
    CGFloat newAlpha = self.blackScreen.alpha + distance/self.view.frame.size.height;
    //check if the alpha is more than 1 or less than 0
        if (newAlpha>1) {
        newAlpha = 1;
        }else if (newAlpha<0.0){
        newAlpha = 0.0;
        }
    self.blackScreen.alpha = newAlpha;
    //reset translation to get incremental change
    [sender setTranslation:CGPointZero inView:self.view];
}

如果我向下平移,不透明度会变为 1.0,我仍然可以调整它。如果我平移直到不透明度为 0,我就根本无法平移。 dimScreen: 选择器停止被调用。谁能描述导致此问题的原因?

【问题讨论】:

  • 添加手势识别器时显示代码。
  • 嗨,Arbitur,界面生成器中添加了手势识别器。
  • 尝试通过代码添加,我在通过界面生成器添加手势识别器时遇到问题。

标签: ios opacity uipangesturerecognizer


【解决方案1】:

alpha 值为 0 的视图不再接收触摸。事实上,看起来低于 0.011 alpha 的视图停止接收触摸。因此,您的代码可以通过更改 else-if 语句中的值来运行:

if (newAlpha>1) {
        newAlpha = 1;
    }else if (newAlpha <= 0.011){
        newAlpha = 0.011;
    }

我看到其他人提到的值是 0.02,而不是我根据经验发现的 0.011。我不知道假设这两个数字中的任何一个是固定的并且将来会继续工作是多么“安全”,但它现在似乎工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2019-05-19
    • 1970-01-01
    • 2015-12-28
    • 2014-04-21
    • 2013-10-09
    • 1970-01-01
    相关资源
    最近更新 更多