約 7 つのテキストフィールドを使用した登録フォームがあります。しかし、値を入力し始めると、キーボードが下の 3 つのフィールドを非表示にします。ビューを上に移動したいのですが、スクロール ビューを使用しないでください。解決策を教えてください。ありがとう。
1 に答える
0
キーボードの表示と非表示の通知に登録します。
- (void)registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
--
- (void)keyboardWasShown:(NSNotification*)iNotification
メソッドで、次を使用してキーボード サイズを取得します。
NSDictionary *anUserInfo = [iNotification userInfo];
CGSize aKeyboardSize = [[anUserInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
iPhone 5 または iPhone 4 であるデバイスに基づいて、画面のサイズも取得します。
これで、非表示のフィールドと、非表示のフィールドを表示するためにビューを上にスライドさせる必要がある距離を把握できます。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
TextField のデリゲートを使用します。非表示のテキストフィールドが編集されるたびに、表示されるように上に移動する必要がある距離を計算します。
距離を取得したら、ビューをアニメートして上に移動します。
上に移動する方法:
CGFloat aDistanceToMakeFieldVisible = 50.0; //you have to calculate this
[UIView animateWithDuration:0.5 animations:^{
CGRect aFrame = self.view.frame;
aFrame.origin.y -= aDistanceToMakeFieldVisible;
self.view.frame = aFrame;
} completion:^(BOOL finished) {
}];
Animate Down も忘れずに...
于 2013-09-13T04:21:30.957 に答える