実際は多分50秒くらいかかります
つかみが大切なので悪しからず。
UIScrollView上のUITextFieldに入力しようとタップするとキーボードがせり上がってきますよね。そのキーボードでこれから入力しようとしているUITextFieldが隠れるのを解決する方法です。
やり方
Cocoapodを使って1つだけ入れてください。
Podfile
pod "EKKeyboardAvoiding"
中にUIScrollViewのカテゴリが含まれてます。
UIScrollView+EKKeyboardAvoiding.h
#import <UIKit/UIKit.h>
@interface UIScrollView (EKKeyboardAvoiding)
- (BOOL)keyboardAvoidingEnabled;
- (void)setKeyboardAvoidingEnabled:(BOOL)enabled;
@end
見ての通りUIScrollViewのインスタンスでsetKeyboardAvoidingEnabled:YESを呼んでやれば、キーボードが出てきたときにその分スクロールしてくれます。スクロールが一番下まで来ていても、なんというかオーバースクロール?してくれます。
ストーリーボードだけで解決する
上記のヘッダファイルは、正確にはこう言ってしまっていいのかは分かりませんが、俺的には
UIScrollView+EKKeyboardAvoiding.h
#import <UIKit/UIKit.h>
@interface UIScrollView (EKKeyboardAvoiding)
@property (readwrite) BOOL keyboardAvoidingEnabled;
@end
と等価だと思ってます。
なのでストーリーボードで対象のUIScrollViewを選択しUser Defined Runtime AttributesにkeyboardAvoidingEnabledというキーを追加しBOOLでチェックボックスをオン(YES)にします。
こうすればコードを一切書かずにフィクス出来ます。