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

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

@”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 ベトナム語

 

シェイク検出

iPhoneをシェイクした時を検出します。

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

実機では少し強めにシェイクしてみてください。

iOSシミュレータでは、メニューのハードウェア▷シェイクジェスチャーで動作します。

コピペで即動く

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

{

    // モーションがシェイクジェスチャーの場合には、新しい画面を開く

    if (motion == UIEventSubtypeMotionShake) {

        NSLog(@”シェイク);

    }

}

- (BOOL)canBecomeFirstResponder {return YES;}

 


 

フリック、タッチ検出

上下左右フリックとタッチを検出できます。

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

注意)フリックはiPhoneの向きと画面回転の有無で検出する状況も変わります。

iPhone縦向きで右フリック▷右フリック検出

iPhone右横向き(画面は左に回転)で右フリック▷右フリック検出

iPhone右横向き(画面回転せず)で右フリック▷上フリック検出

コピペで即動く

//タッチ開始検出

CGPoint _tB;

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

    _tB = [ [touches anyObject] locationInView: self.view ];//タッチ開始位置記録

}

//タッチ終了検出

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

    CGPoint tE = [ [touches anyObject] locationInView: self.view ];//タッチ終了位置記録

    NSInteger xmv = ABS(_tB.x – tE.x);//x方向タッチ移動量

    NSInteger ymv = ABS(_tB.y – tE.y);//y方向タッチ移動量

    if((xmv < 50)&&(ymv < 50)){//タッチの移動量が50以下ならタッチ

        NSLog(@”タッチ);

        return;

    }

    if ( xmv < ymv ) {          //Y方向の移動量が多い場合 上下フリック

        if ( _tB.y > tE.y ) {   //タッチ 開始位置>終了位置 上フリック

            NSLog(@”上フリック);

        } else {                //タッチ 開始位置<終了位置 下フリック

            NSLog(@”下フリック);

        }

    } else {                    //X方向の移動量が多い場合 左右フリック

        if ( _tB.x > tE.x ) {   //タッチ 開始位置>終了位置 左フリック

            NSLog(@”左フリック);

        } else {                //タッチ 開始位置<終了位置 右フリック

            NSLog(@”右フリック);

        }

    }

}