gpt4 book ai didi

ios - 为 iOS 应用程序实现锁屏

转载 作者:行者123 更新时间:2023-12-01 18:24:40 24 4
gpt4 key购买 nike

我正在开发一个需要“锁定屏幕”的应用程序,用户必须输入密码才能访问存储在应用程序中的数据。

每当应用程序启动和用户不活动几分钟后,应显示此锁定屏幕。

目前,我的 Storyboard中有一个单独的 UIViewController,它没有连接到 Storyboard中的任何其他 View 。我知道我可以通过将 instantiateViewControllerWithIdentifier 发送到 [self storyboard] 来访问这个 View Controller 。但是,这不适用于应用程序委托(delegate)。

但我需要在应用代理尝试打开数据库之前从应用代理调用锁定屏幕。

什么是实现这一点的好方法?

最佳答案

这可能是一个迟到的答案,但我必须为我的一位使用 Storyboard 的客户实现相同的要求。 You can download the full project from here .希望这可以帮助某人。

我创建了两个 Viewcontroller,一个是 MainView,另一个需要一个四位数的代码才能关闭。我在 MainView 和 BlockKeypadViewController 之间创建了一个模态 segue,并将其命名为“lockItSegue”。
在 MainView 上,我插入了一个调用“lockIt”方法的 RoundRectButton。
该方法只执行segue“lockItSegue”。

- (IBAction)lockIt:(id)sender 
{
[self performSegueWithIdentifier:@"lockItSegue" sender:self];
}

在 BlockKeypadViewController.h 上,我创建了
//
// BlockKeypadViewController.h
// Consultablet
//
// Created by EDGARD AGUIRRE ROZO on 22/03/13.
// Copyright (c) 2013 Colombia Creative Software. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface BlockKeypadViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *wrongCodeLabel;//*codigoIncorrectoLabel;
@property (strong, nonatomic) IBOutlet UILabel *tryAgainLabel;//*trateNuevamenteLabel;

@property (strong, nonatomic) IBOutlet UILabel *digit1;//*caracter1;
@property (strong, nonatomic) IBOutlet UILabel *digit2;//*caracter2;
@property (strong, nonatomic) IBOutlet UILabel *digit3;//*caracter3;
@property (strong, nonatomic) IBOutlet UILabel *digit4;//*caracter4;
@property int counter;//contador;
@property int codeIn;//claveIngresado;
@property int unlockCode;//claveDesbloqueo;
-(void) calculate:(int)number;//calcular:(int)numero;
- (IBAction)one:(id)sender;//uno:(id)sender;
- (IBAction)two:(id)sender;//dos:(id)sender;
- (IBAction)three:(id)sender;//tres:(id)sender;
- (IBAction)four:(id)sender;//cuatro:(id)sender;
- (IBAction)five:(id)sender;//cinco:(id)sender;
- (IBAction)six:(id)sender;//seis:(id)sender;
- (IBAction)seven:(id)sender;//siete:(id)sender;
- (IBAction)eight:(id)sender;//ocho:(id)sender;
- (IBAction)nine:(id)sender;//nueve:(id)sender;
- (IBAction)zero:(id)sender;//cero:(id)sender;
- (IBAction)cancel:(id)sender;//cancel:(id)sender;
-(void)checkCode;//verificarClave;

@end

在 BlockKeypadViewController.m 上:
//
// BlockKeypadViewController.m
// Consultablet
//
// Created by EDGARD AGUIRRE ROZO on 22/03/13.
// Copyright (c) 2013 Colombia Creative Software. All rights reserved.
//

#import "BlockKeypadViewController.h"
@implementation UILabel (My2)
//- (void)setImage:(UIImage *)image forState:(UIControlState)state animated:(BOOL)animated
- (void)setHidden:(BOOL)hidden animated:(BOOL)animated
{
//[self setImage:image forState:state];
[self setHidden:hidden];
if (animated)
{
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setFillMode:kCAFillModeBoth];
[animation setDuration:.3];
[[self layer] addAnimation:animation forKey:@"UILabelSetAnimationKey"];
}
}
- (void)setHidden:(BOOL)hidden animated:(BOOL)animated seconds:(int)seconds
{
//[self setImage:image forState:state];
[self setHidden:hidden];
if (animated)
{
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setFillMode:kCAFillModeBoth];
[animation setDuration:seconds];
[[self layer] addAnimation:animation forKey:@"UILabelSetAnimationKey"];
}
}
@end
@interface BlockKeypadViewController ()

@end

@implementation BlockKeypadViewController
@synthesize digit1,digit2,digit3,digit4,counter,codeIn,unlockCode,wrongCodeLabel,tryAgainLabel;

- (void)viewDidLoad
{
[super viewDidLoad];
self.counter = 1;
self.codeIn=0;

self.unlockCode=1234;
NSLog(@"Unlock Code %d",self.unlockCode);

[digit1 setHidden:YES animated:YES];
[digit2 setHidden:YES animated:YES];
[digit3 setHidden:YES animated:YES];
[digit4 setHidden:YES animated:YES];
}
-(void)checkCode
{
if(self.codeIn==self.unlockCode)
{
[self dismissViewControllerAnimated:YES completion:nil];
}
else
{
[wrongCodeLabel setHidden:NO animated:YES seconds:.1];
[tryAgainLabel setHidden:NO animated:YES seconds:.1];
[self.digit1 setHidden:YES animated:YES];
[self.digit2 setHidden:YES animated:YES];
[self.digit3 setHidden:YES animated:YES];
[self.digit4 setHidden:YES animated:YES];
self.codeIn = 0;

NSLog(@"Wrong Code");
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(void) calculate:(int)number
{
if(self.counter==1)
{
[wrongCodeLabel setHidden:YES animated:YES seconds:.2];
[tryAgainLabel setHidden:YES animated:YES seconds:.2];
[self.digit1 setHidden:NO animated:YES];
self.codeIn = number*1000;
}
if(self.counter==2)
{
[self.digit2 setHidden:NO animated:YES];
self.codeIn = self.codeIn+number*100;
}
if(self.counter==3)
{
[self.digit3 setHidden:NO animated:YES];
self.codeIn = self.codeIn+number*10;
}
if(self.counter==4)
{
[self.digit4 setHidden:NO animated:YES];
self.codeIn = self.codeIn+number;
[self performSelector:@selector(checkCode) withObject:nil afterDelay:0.2];
}
if(self.counter<4)
{
self.counter++;
}
else
{
self.counter=1;
}
}
- (IBAction)one:(id)sender
{
[self calculate:1];
}
- (IBAction)two:(id)sender
{
[self calculate:2];
}
- (IBAction)three:(id)sender
{
[self calculate:3];
}
- (IBAction)four:(id)sender
{
[self calculate:4];
}
- (IBAction)five:(id)sender
{
[self calculate:5];
}
- (IBAction)six:(id)sender
{
[self calculate:6];
}
- (IBAction)seven:(id)sender
{
[self calculate:7];
}
- (IBAction)eight:(id)sender
{
[self calculate:8];
}
- (IBAction)nine:(id)sender
{
[self calculate:9];
}
- (IBAction)zero:(id)sender
{
[self calculate:0];
}
- (IBAction)cancel:(id)sender
{
[self.digit1 setHidden:YES animated:YES];
[self.digit2 setHidden:YES animated:YES];
[self.digit3 setHidden:YES animated:YES];
[self.digit4 setHidden:YES animated:YES];
self.codeIn = 0;
self.counter = 1;
}


@end

关于ios - 为 iOS 应用程序实现锁屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14591243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com