サブビューにUIテキストフィールドがあります。ビューに追加しています。キーボードがポップアップすると、このサブビューを追加するビューをアニメーション化したいと思います。サブビュークラスにすべてのテキストフィールドデリゲート関数を記述しましたのみ。したがって、Animateテキストフィールド機能を使用すると、親ビューは移動せず、代わりにサブビューがアニメーション化されます....助けてください
質問する
4701 次
2 に答える
15
Try this:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
in the viewDidLoad
and then this
- (void)keyboardWillHide:(NSNotification *)aNotification
{
// the keyboard is hiding reset the table's height
NSTimeInterval animationDuration =
[[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect frame = self.view.frame;
frame.origin.y += 160;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
self.view.frame = frame;
[UIView commitAnimations];
}
- (void)keyboardWillShow:(NSNotification *)aNotification
{
// the keyboard is showing so resize the table's height
NSTimeInterval animationDuration =
[[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect frame = self.view.frame;
frame.origin.y -= 160;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
self.view.frame = frame;
[UIView commitAnimations];
}
in your view controller
Most likely you will have to change the value (160) that I put here based on your specific view
于 2013-09-03T10:29:55.063 に答える
1
textFieldDidBeginEditingを試したことがありますか? これを試したかどうか、それが適切な方法かどうかはわかりません。私はこれを使用しましたが、達成するために少ない行が機能しています
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
self.view.frame=CGRectMake(0, -300, 320, 700);
}
これにより、ルートビューが一番上に移動するため、サブビューが自動的に一番上に移動しますテキストフィールドはキーボードの後ろに隠れません。申し訳ありませんが、コメントする評判がありません
于 2013-09-03T10:56:28.777 に答える