テキストフィールドをタップしてキーボードが表示されたときにビューを上に移動させるコードを作成しようとしています。テキストフィールドを含むビューは、プログラムの起動時に最初に表示されるものではありません。だから私はViewControllerにいくつかのコードを書いた
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
}
-(void)keyboardDidShow:(NSNotification*)notification {
NSDictionary* userInfo = [notification userInfo];
NSValue* value = [userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey];
CGSize keyboardSize = [value CGRectValue].size;
gm.frame = CGRectMake(gm.frame.origin.x, gm.frame.origin.y, gm.frame.size.width, gm.frame.size.height-keyboardSize.height);
}
-(void)keyboarDidHide:(NSNotification*)notification {
gm.frame = CGRectMake(gm.frame.origin.x, gm.frame.origin.y, gm.frame.size.width, gm.frame.size.height);
}
gm はテキストフィールドを含むビューです:
@class gameOverMenu;
@interface RootViewController : UIViewController {
gameOverMenu* gm;
}
@end
したがって、テキストフィールドをタップすると、これらのメソッドがプログラムに実行されますが、何も起こりません。つまり、ビューはキーボードで移動されず、キーボードを非表示にすることはできません。なんでそうなの?