ビューコントローラーからすべてのアクションを無効にする方法を知る必要があります。つまり、View Controller 内のすべてのオブジェクトが凍結されます。練習として、ボタンと textfield、slider などのいくつかのオブジェクトを宣言します。そうすると、ボタンが押されたときにすべてのオブジェクトを使用できなくなります。
このView Controllerからのすべてのアクティビティを無効にする必要があります。
ビューコントローラーからすべてのアクションを無効にする方法を知る必要があります。つまり、View Controller 内のすべてのオブジェクトが凍結されます。練習として、ボタンと textfield、slider などのいくつかのオブジェクトを宣言します。そうすると、ボタンが押されたときにすべてのオブジェクトを使用できなくなります。
このView Controllerからのすべてのアクティビティを無効にする必要があります。
ビューのすべてのサブビューを無効にするには、次の方法があります。
[self.view setUserInteractionEnabled:NO];
あなたの中にViewController.h
は、ボタンが押されたイベントのためのいくつかの機能があります:
- (IBAction)signInUser:(id)sender;
内部ViewController.m
ですべてのコントローラーを参照し、それらを無効にします。
- (void)signInUser:(id)sender {
someControl.enabled = NO;
}
IBOutlet
すべてのプロパティをプロパティとして配線し、それらを合成したと仮定します。
Bartuによるすばらしい答え。Swift版はこちら。
self.view.isUserInteractionEnabled = false
ナビゲーション バーとタブ バーを無効にする場合は、透明なビュー コントローラーを提示することもできます。これにより、ウィンドウがフリーズし、ユーザーが画面を操作できなくなります。
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];
画面を再度有効にするには、presentedVC を閉じるだけです
[self.presentedVC dismissViewControllerAnimated:YES completion:^{
}];
表示されるすべてのビューが別の UIView に含まれるようにビュー構造を設定します。すべての「アクティビティ」を無効にする場合 (これがすべてのユーザー インタラクションを意味すると仮定)、外部ビューでのユーザー インタラクションを無効にします。これにより、[UI を無効にする] ボタンの使用も無効になることに注意してください。このボタンを有効のままにするには、これを「外側のビュー」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