Hatena::ブログ(Diary)

NoasMarkのプログラムMemo(まれに雑記) RSSフィード

【今後のイベント参加予定表】
【2012年】
・2012/06/03(日) 輪廻のラグランジェ 「鴨女文化祭 〜逃げるな!攻めろ!ジャージ部魂!!〜」昼の部 東京 品川ステラボール
・2012/06/03(日) 輪廻のラグランジェ 「鴨女文化祭 〜逃げるな!攻めろ!ジャージ部魂!!〜」夜の部 東京 品川ステラボール
・2012/06/05(火) 中島愛ファンクラブイベント「こまめ喫茶」 東京 品川ステラボール
・2012/06/09(土) ももいろクローバーZ ももクノvol.3 1部 埼玉 東武動物公園ハッピーオンステージ
・2012/06/09(土) プラチナ・ジャズ・オーケストラ presented by ラスマス・フェイバー 東京 Billboard Live TOKYO
・2012/07/14(土) ももいろクローバーZ ももクロ夏のバカ騒ぎSummer Dive 2012 Tour 兵庫 神戸ワールド記念ホール
・2012/07/16(月・祝) 水樹奈々 NANA MIZUKI LIVE UNION 2012 大阪城ホール
・2012/07/20(金) May'n WORLD TOUR 2012「ROCK YOUR BEATS」神奈川 横浜BLITZ
・2012/07/22(日) ももいろクローバーZ ももクロ夏のバカ騒ぎSummer Dive 2012 Tour 静岡 アクトシティ浜松 大ホール
・2012/07/28(土) GIRLS' FACTORY 12 東京 Zepp Diver City
・2012/07/29(日) GIRLS' FACTORY 12 東京 Zepp Diver City
・2012/08/05(日) 水樹奈々 NANA MIZUKI LIVE UNION 2012 日本ガイシホール
・2012/08/18(土) May'n WORLD TOUR 2012「ROCK YOUR BEATS」岐阜 CLUB-G
・2012/08/25(土) アニメロサマーライブ2012 ∞INFINITY 埼玉 さいたまスーパーアリーナ
・2012/08/26(日) アニメロサマーライブ2012 ∞INFINITY 埼玉 さいたまスーパーアリーナ
・2012/09/08(土) 水樹奈々 NANA MIZUKI LIVE UNION 2012 千葉 千葉マリンスタジアム
・2012/10/13(土) May'n WORLD TOUR 2012「ROCK YOUR BEATS」大阪 Zepp Namba
・2012/10/20(土) May'n WORLD TOUR 2012「ROCK YOUR BEATS」東京 Zepp Tokyo
・2012/10/21(日) May'n WORLD TOUR 2012「ROCK YOUR BEATS」東京 Zepp Tokyo

【チケット取れたら】
・2012/06/17(土) ももいろクローバーZ ももクロ夏のバカ騒ぎSummer Dive 2012 Tour-開幕戦- 東京 NHKホール
・2012/06/23(土) ももいろクローバーZ ももクロ夏のバカ騒ぎSummer Dive 2012 Tour 宮城 Zepp Sendai
・2012/07/16(月・祝) ももいろクローバーZ ももクロ夏のバカ騒ぎSummer Dive 2012 Tour 愛知 名古屋国際会議場センチュリーホール
・2012/08/05(日) ももいろクローバーZ ももクロ夏のバカ騒ぎSummer Dive 2012 Tour-最終戦- 埼玉 西武ドーム

2011-10-17 iOS5でのキーボード処理について

[][]

先日iOS5がリリースされましたが、キーボードの処理で変更があったため、対応したメモ。

iOS4(iPhone/iPod touch)まではキーボードの高さは216だった。

しかし、日本語キーボードの予測変換がキーボードの上に表示されるようになり、その際には高さが252と変更された。

キーボードの上にツールバーを設置していたため日本語キーボードに切り替えた場合、予測変換でツールバーが見えなくなってしまうという現象に陥ったため対応したのが経緯。

以下、キーボードの上に高さ40のツールバーを設置した時の処理



※2011/10/26 更新

iOS5でのキーボード処理について【追記】 - NoasMarkのプログラムMemo(まれに雑記)


/*!
 * @brief	共通処理
 */
- (void)KeyboardCommonFunc:(NSNotification *)notification {
	CGRect keyboardRect = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
	NSLog(@"keyboardRect.size.height = %f", keyboardRect.size.height);

	if (keyboardRect.size.height > 0.f) {
		// ツールバーの高さが40の場合. (画面サイズは固定だがサンプルなので320x480として扱う).
		[toolBar setFrame:CGRectMake(0, 480 - keyboardRect.size.height - 40, 320, 40)];
	}
}

/*!
 * @brief	キーボード表示通知
 */
- (void)keyboardWillShowNotification:(NSNotification *)notification {
	NSLog(@"keyboardWillShowNotification call");
	[self KeyboardCommonFunc:notification];
}

/*!
 * @brief	キーボード変更通知
 */
- (void)keyboardWillChangeNotification:(NSNotification *)notification {
	NSLog(@"keyboardWillChangeNotification call.");
	[self KeyboardCommonFunc:notification];
}

/*!
 * @brief	View表示通知
 */
- (void)viewWillAppear:(BOOL)animated {
	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShowNotification:) name:UIKeyboardWillShowNotification object:nil];

	const float version = [[[UIDevice currentDevice] systemVersion] floatValue];
	if (version >= 4.2f) {
		[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeNotification:) name:UITextInputCurrentInputModeDidChangeNotification object:nil];
	}
}

/*!
 * @brief	View非表示通知
 */
- (void)viewWillDisappear:(BOOL)animated {
	[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];

	const float version = [[[UIDevice currentDevice] systemVersion] floatValue];
	if (version >= 4.2f) {
		[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextInputCurrentInputModeDidChangeNotification object:nil];
	}
}

言語が変わった時はキーボードの高さ情報は0のようなので、サイズ判定をして0以上ならツールバーの位置を変更するようにしている。

言語が変わった場合にツールバーの情報を変えたりする場合はUITextInputCurrentInputModeDidChangeNotificationで指定したメソッドで処理をすれば問題ないかと。

以下、変更した時のログ。

f:id:NoAsMark:20111017155339p:image

// 1.
// 表示(日本語キーボード).
keyboardWillShowNotification call
keyboardRect.size.height = 252.000000
keyboardWillShowNotification call
keyboardRect.size.height = 252.000000

f:id:NoAsMark:20111017155340p:image

// 2.
// 日本語→英語.
keyboardWillChangeNotification call
keyboardRect.size.height = 0.000000
keyboardWillShowNotification call
keyboardRect.size.height = 216.000000

f:id:NoAsMark:20111017155339p:image

// 3.
// 英語→日本語.
keyboardWillChangeNotification call
keyboardRect.size.height = 0.000000
keyboardWillShowNotification call
keyboardRect.size.height = 252.000000

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。