アラートビュー(メッセージ表示とボタン選択)その1

アラートビューとはこれです。

201306281007365b5

1)まずアラートビューを準備します。

アラートビューを表示させたいタイミングのところに貼付けて下さい。

上の画像のアラートビューを作るにはこの様に設定します。

ボタンはキャンセルボタンも含め5個まではいけます。それ以上が画面が崩れるみたい。。。

コピペで即ウゴ

    //アラートビューの準備

    UIAlertView *al = [[UIAlertView alloc] initWithTitle:@”タイトル message:@”メッセージ delegate:self cancelButtonTitle:@”キャンセル otherButtonTitles:@”ボタン1,@”ボタン2,@”ボタン3,@”ボタン4, nil];

    al.tag = 1;//アラートビューが複数ある場合、ここでそれぞれに違う番号を指定します。

    [al show];//アラートビューを表示

2)アラートビューで押した番号に応じて処理をする部分を準備します。

ViewController.mの一番下 @end の上にコピペで即ウゴです。

コピペで即ウゴ

//アラートビューでボタン押した後の処理

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

    if(alertView.tag == 1){//アラートビューが複数ある場合、この番号で処理を分けます。

        switch (buttonIndex) {

            case 0:

                NSLog(@”キャンセルを押しました);

                break;

            case 1:

                NSLog(@”ボタン1を押しました);

                break;

            case 2:

                NSLog(@”ボタン2を押しました);

                break;

            case 3:

                NSLog(@”ボタン3を押しました);

                break;

            case 4:

                NSLog(@”ボタン4を押しました);

                break;

            default:

                NSLog(@”その他);

                break;

        }

    }

}

 


 

iPhoneのシステムサウンド

AudioToolbox.frameworkを追加(youtube)してから使います。

1000という番号を変えると、いろいろな音が出せます。

iOSシミュレータでは音が鳴りません。

コピペで即ウゴ
AudioServicesPlaySystemSound(1000);

実際に聞いてみないと、雰囲気がわからないので、番号をいろいろかえて 試してみてください。

1000~1036 よく使われる感じのシステム音系

1050~1057 分類のできない感じのいろいろな音系

1070~1075 電話っぽいプー音系

1100~1118 短い音、シャッター、接続、切断な感じの音系

1150~1154 電話のベル、プップップッ系

1200~1211 電話のピッポッパ系

1254~1259 プーピッ、ポポ、ポペッ、ププ、ピーププ系

1300~1336 メール、ジングル、効果音的な系

設定▷サウンド▷バイブレーションの着信音有り、着信音なしのどちらか、または両方がオンになっているとバイブが作動する音があります。


アクティブインジケータ

アクティブインジケータとはこれです。

アクティブインジケータ くるくる

1)まずは、アクティブインジケータを用意します。

ViewController.mの一番上あたり #import ”ViewController.h” の下等に貼付けてください。

これでアクティブインジケータをViewController.m内のどこからでも、設定、動作をさせる事ができます。

コピペで即ウゴ

UIActivityIndicatorView *_ai;

次は、viewDidLoadの中等に貼付けてください。

これで、アクティブインジケータの設定ができます。

コピペで即ウゴ

    //アクティブインジケータ

    _ai = [[UIActivityIndicatorView alloc] init];

    _ai.center = self.view.center;//中央に表示

    _ai.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;//種類指定(3種類から選べます)

//    _ai.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;//種類指定(3種類から選べます)

//    _ai.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;//種類指定(3種類から選べます)

コピペで即ウゴ

2)アクティブインジケータを動かします。

ここでは、タッチしている間だけ動く様にしています。

(タッチ等の動きについてはこちらをご参照ください。)

ViewController.mの一番下 @end の上にコピペで即ウゴです。

コピペで即ウゴ

//この例では、タッチしている間だけアクティブインジケータが作動します。

//タッチ開始検出

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    [_ai startAnimating];//アクティブインジケータ開始

}

//タッチ終了検出

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    [_ai stopAnimating];//アクティブインジケータ停止

}

 

 


各設定値の保存

NSUserDefaultsを使い、次の様な流れにするのが良いと思います。

1)初めての起動時、設定値に初期値を保存

2)設定値を読込み、アプリの動作に適用

3)設定画面等で設定変更をしたら、設定値に保存


1)初めての起動時、設定値に初期値を保存

コピペで即動く
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];//NSUserDefaults取得
    NSMutableDictionary *defaults = [NSMutableDictionary dictionary];//NSMutableDictionary取得
    //一旦NSMutableDictionaryに全て設定
    [defaults setObject:@"1" forKey:@"KEY_I"];//「KEY_I」という名前で「1」の値(整数)をセット
    [defaults setObject:@"1.2" forKey:@"KEY_F"];//「KEY_F」という名前で「1.2」の値(少数)をセット
    [defaults setObject:@"test" forKey:@"KEY_S"];//「KEY_S」という名前で「test」の値(文字)をセット
    [defaults setObject:@"YES" forKey:@"KEY_B"];//「KEY_B」という名前で「YES」の値(BOOL値)をセット
    [ud registerDefaults:defaults];//設定値を保存

2)設定値を読込み、アプリの動作に適用

 読み込む値の型により、integerForKey、floatForKey、stringForKey、boolForKey等を指定します。

コピペで即ウゴ
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];//NSUserDefaults取得
    NSInteger i = [ud integerForKey:@"KEY_I"];//「KEY_I」という名前の設定値を取得
    NSLog(@”%d”,i);
    CGFloat f = [ud floatForKey:@"KEY_F"];//「KEY_F」という名前の設定値を取得
    NSLog(@”%f”,f);
    NSString *s = [ud stringForKey:@"KEY_S"];//「KEY_S」という名前の設定値を取得
    NSLog(@”%@”,s);
    BOOL b = [ud boolForKey:@"KEY_B"];//「KEY_B」という名前の設定値を取得
    NSLog(@”%@”, b ? @”YES” : @”NO”);
NSInteger integerForKey:
float floatForKey:
double doubleForKey:
NSString stringForKey:
BOOL boolForKey:
NSArray arrayForKey:
NSDictionary dictionaryForKey:
NSData objectForKey:
NSURL URLForKey:

3)設定画面等で設定変更をしたら、設定値に保存
書き込む値の型により、setInteger、setFloat、setObject、setBool等とforKeyで名前を指定します。
コピペで即ウゴ
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];//NSUserDefaults取得
    [ud setInteger:2 forKey:@"KEY_I"];//「KEY_I」という名前で「1」の値(整数)をセット
    [ud setFloat:2.3 forKey:@"KEY_F"];//「KEY_F」という名前で「1.2」の値(少数)をセット
    [ud setObject:@"TEST" forKey:@"KEY_S"];//「KEY_S」という名前で「test」の値(文字)をセット
    [ud setBool:NO forKey:@"KEY_B"];//「KEY_B」という名前で「YES」の値(BOOL値)をセット
    [ud synchronize];//設定値を保存
NSInteger setInteger:
float setFloat:
double setDouble:
NSString setObject:
BOOL setBool:
NSArray setObject:
NSDictionary setObject:
NSData setObject:
NSURL setURL:

各国の言葉(言語)で処理を変える。

手軽に各言語に対応させたい時はこんなコードを使っています。

@”ja”だと日本語、@”zh-Hans”だと中国語(簡体字)、@”en”だと英語という感じです。

シミュレータや実機での動作確認は、設定▷一般▷言語環境▷言語の順に選択して、言語を切替できます。
コピペで即動く
    //各言語毎に処理
    if ([[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@”ja”]) {
        NSLog(@”日本語処理”);
    }else if ([[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@”zh-Hans”]) {
        NSLog(@”中国語処理”);
    }else if ([[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@”en”]) {
        NSLog(@”英語処理”);
    }else{//
        NSLog(@”その他の言語処理”);
    }

Localizable.strings、NSLocalizedStringでのローカライズが必要無い時には、こちらを使っています。

各言語に対応するコード
コード 言語
ja 日本語
en 英語
zh-Hans 中国語(簡体字)
fr フランス語
de ドイツ語
nl オランダ語
it イタリア語
es スペイン語
pt ポルトガル語
pt-PT ポルトガル語(ポルトガル)
da デンマーク語
fi フィンランド語
nb ノルウェー語[ブークモール]
sv スウェーデン語
ko 韓国語
zh-Hant 中国語(繁体字)
ru ロシア語
pl ポーランド語
tr トルコ語
uk ウクライナ語
ar アラビア語
hr クロアチア語
cs チェコ語
el ギリシャ語
he ヘブライ語
ro ルーマニア語
sk スロバキア語
th タイ語
id インドネシア語
ms マレー語
en-GB 英語(イギリス)
ca カタロニア語
hu ハンガリー語
vi ベトナム語