识别屏幕锁定 n 解锁 ios 的滑动模式

Posted

技术标签:

【中文标题】识别屏幕锁定 n 解锁 ios 的滑动模式【英文标题】:Recognizing the Swiping pattern for screen lock n unlock ios 【发布时间】:2014-05-27 16:05:13 【问题描述】:

我想创建一个用于锁定和解锁屏幕的滑动模式(在不松开手指的情况下滑动)。如何使用 UISwipeGestureRecognizer 做到这一点。我想保存它并在我再次尝试登录时匹配它。我怎样才能保存它?作为图像或其他东西?请帮我解决这个问题。 谢谢。

【问题讨论】:

【参考方案1】:

android Pattern Lock on iPhone for ios

A Pattern Lock for iOS similar to the one in Android

【讨论】:

有没有什么办法可以实现免手锁的屏幕锁。我的意思是我们画的任何东西(可能是圆形、之字形、线条等)都应该是我们的锁。我们该怎么做?【参考方案2】:

你说的“模式”是什么意思,你到底想保存什么?

您应该使用UIPanGestureRecognizer,因为滑动只是一种快速翻转手势,而平移是一种受控运动,您可以跟踪整个距离。

这是我的处理方式,从右向左移动(与锁定屏幕相反):

- (IBAction)slide:(UIPanGestureRecognizer *)gesture

    CGPoint translate = [gesture translationInView:gesture.view];
    translate.y = 0.0; // Just doing horizontal panning

    if (gesture.state == UIGestureRecognizerStateChanged)
    
        // Sliding left only
        if (translate.x < 0.0)
        
            self.slideLane.frame = [self frameForSliderLabelWithTranslate:translate];
        
    
    else if ([gesture stoppedPanning])
    
        if (translate.x < 0.0 && translate.x < -(gesture.view.frame.size.width / 2.5))
        
            // Panned enough distance to unlock
        
        else
        
            // Movement was too short, put it back again
            NSTimeInterval actualDuration = [self animationDuration:0.25 forWidth:gesture.view.frame.size.width withTranslation:(-translate.x)];

            [UIView animateWithDuration:actualDuration delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^
                self.slideLane.frame = [self frameForSliderLabelWithTranslate:CGPointZero];
             completion:^(BOOL finished) 

            ];
        
    


- (CGRect)frameForSliderLabelWithTranslate:(CGPoint)translate

    return CGRectMake(translate.x, self.slideLane.frame.origin.y, self.slideLane.bounds.size.width, self.slideLane.bounds.size.height);

因为我不在乎手势停止的原因,所以我添加了这个类别以使 else-if 子句更具可读性。但它是可选的:

@implementation UIPanGestureRecognizer (Stopped)
- (BOOL)stoppedPanning

    return (   self.state == UIGestureRecognizerStateCancelled
            || self.state == UIGestureRecognizerStateEnded
            || self.state == UIGestureRecognizerStateFailed);

@end

理想情况下,您应该考虑运动的速度,因为快速朝正确的方向轻弹就足够了。在我的例子中,我希望用户移动方块,无论多快。

【讨论】:

存储它意味着,一旦我将用于锁定和解锁的图案放入我必须确认它。为此我需要保存和匹配吗? 啊,明白了。你的意思是安卓锁屏,不是iOS锁屏。 No.. 对于 iPhone,我正在尝试创建锁定屏幕。这几乎类似于android屏幕。 有没有什么办法可以实现免手锁的屏幕锁。我的意思是我们画的任何东西(可能是圆形、之字形、线条等)都应该是我们的锁。我们该怎么做?

以上是关于识别屏幕锁定 n 解锁 ios 的滑动模式的主要内容,如果未能解决你的问题,请参考以下文章

iPad应用程序首先进入纵向模式,然后在解锁屏幕后进入横向模式,在锁定时处于横向模式

使用回溯计算屏幕锁定模式的问题

iPhone双滑解锁?

无障碍模式怎么滑动屏幕

在百度看小说怎么取消左、右滑动,在怎么打开上、下滑动模式

从后台服务启动应用程序