[英]Disable/Freeze view controller
我需要知道如何禁用视图控制器中的所有操作。 换句话说,视图控制器中的所有对象都将被冻结。 作为练习,我声明了一个按钮和一些对象,如文本字段,滑块等。然后按下按钮时不能使用所有对象。
我需要禁用此视图控制器中的所有活动 。
您只需禁用视图中的每个子视图;
[self.view setUserInteractionEnabled:NO];
在ViewController.h
里面有按钮按下事件的一些功能:
- (IBAction)signInUser:(id)sender;
在ViewController.m
只需引用所有控制器并禁用它们:
- (void)signInUser:(id)sender {
someControl.enabled = NO;
}
假设您将所有IBOutlet
为属性并合成它们。
设置视图结构,以便所有可见视图都包含在另一个UIView中。 如果要禁用所有“活动”(假设这意味着所有用户交互),请禁用外部视图上的用户交互。 请注意,这也将禁用“禁用用户界面”按钮。 要允许此按钮保持启用状态,请不要在“外部视图”UIView中包含此按钮。
故事板编辑器中的结构和视图控制器:
查看控制器头:
#import <UIKit/UIKit.h>
@interface TestViewController : UIViewController
@property (weak) IBOutlet UIView *outerView;
-(IBAction)disableButtonTapped:(id)sender;
@end
查看“禁用”按钮的控制器实现:
#import "TestViewController.h"
@interface TestViewController ()
@end
@implementation TestViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(IBAction)disableButtonTapped:(id)sender{
self.outerView.userInteractionEnabled = NO;
}
@end
如果要禁用导航栏和选项卡栏,还可以显示透明视图控制器。 如果冻结您的窗口,将不允许用户与屏幕交互。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
self.presentedVC = [storyboard instantiateViewControllerWithIdentifier:@"BlankViewController"];
self.presentedVC.view.backgroundColor = [UIColor clearColor];
self.presentedVC.modalPresentationStyle = UIModalPresentationCustom;
[self presentViewController:self.presentedVC animated:YES completion:nil];
要再次启用屏幕,只需关闭presentVC
[self.presentedVC dismissViewControllerAnimated:YES completion:^{
}];
巴图很棒的回答。 这是Swift版本。
self.view.isUserInteractionEnabled = false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.