Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> iOSアプリ開発(Swift、Objective-C) -> Objective-Cで、キーボードの座標や寸法を正確に取得する方法
縺雁ー城▲縺遞シ縺弱↑繧峨昴う繝ウ繝医し繧、繝GetMoney!

Objective-Cで、キーボードの座標や寸法を正確に取得する方法

昔、Objective-Cで作ったアプリを、iOS13に対応したかったのですが、iPhoneのバージョンが上がるにつれ、だんだんと、キーボードの座標や寸法が違う機種が現れやがり、困りました・・・orz

という事で、キーボードの座標や寸法を正確に計算する方法です。

まず、ViewDidLoadなどの、アプリケーションのエントリポイント的なメソッドの中に、NSNotificationCenterのaddObserverを使って、キーボードが表示された時にコールバック関数を呼べるようにします。

あとは、事前に作っておいたコールバック関数内でデータを取得しちゃえばOKです。

下記、例文です。

ロジックは超簡単ですが、Objective-Cで書くと、暗号のようですねw

-(void)keyboardDidShow:(NSNotification*)notification{ // [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]に、座標情報がCGRectで格納されています。 // 例えば、キーボードの真上に50pxのビューを表示させたい場合は、下記のように記述すればおkです。 int y = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y; [testView setFrame:CGRectMake(txtBar.frame.origin.x, y - 50, txtBar.frame.size.width, 50)]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // ↑ViewDidLoadとか、どこでも良いので、アプリケーションが起動した直後のメソッドに、下記を追加します。 [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; }

最初に記事を書いた日:2019/10/30

この記事をシェアする

このエントリーをはてなブックマークに追加
縺雁ー城▲縺遞シ縺弱↑繧峨昴う繝ウ繝医し繧、繝GetMoney!

関連記事

資料室のトップに戻る
Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> iOSアプリ開発(Swift、Objective-C) -> Objective-Cで、キーボードの座標や寸法を正確に取得する方法
▲Top English