Takahiro Octopress Blog

-1から始める情弱プログラミング

一定時間内は画面タップをさせない!

SVProgressHUDとNSTimerを使う

さて、本日はさくっとメモしておきます。
できると思っていて当然できた話なので、本当にメモです笑。

AFNetworkingなどでどこかしらのサーバに通信している間、画面をユーザに触らせたくないことがあるかもしれません。
そんなときはローディングウィンドウをSVProgressHUDで表示し、 NSTimer を使って時間で操ります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#import "ViewController.h"
#import "SVProgressHUD.h"

@interface ViewController ()

@property (strong, nonatomic) NSTimer *timer;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
  [super didReceiveMemoryWarning];
}

- (IBAction)showLoadWindow:(id)sender {
  // ローディングウィンドウの表示
  [SVProgressHUD showWithStatus:@"Loading..." maskType:SVProgressHUDMaskTypeGradient];
  // タイマーの設定
  _timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(hiddenWindow:) userInfo:nil repeats:NO];
}

/**
 タイマー対象メソッド(ローディングウィンドウを非表示にする処理)
 @param timer タイマー
 */
- (void)hiddenWindow:(NSTimer *)timer
{
  [SVProgressHUD dismiss];
}

@end

よし、できた!ってところでメモ書き終了。

Comments