私はキーボードがアニメーション化されているときに私のビューを移動できるように、iOSキーボードの高さを取得しようとしています。しかし、私は値258を返し続けます(これは正しくありません。なぜなら、私のビューが高すぎるからです)なぜこれが起こっていますか?以下のコード:Obj-c - 間違ったキーボードの高さが返されますか?
ViewController.m
-(void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];
}
- (void)keyboardWillChange:(NSNotification *)notification {
NSDictionary* keyboardInfo = [notification userInfo];
NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue];
self.keyboardHeight = keyboardFrameBeginRect.size.height;
}
- (void) animateTextView:(BOOL) up
{
const int movementDistance = self.keyboardHeight;
const float movementDuration = 0.3f;
int movement= movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.upView.frame = CGRectOffset(self.upView.frame, 0, movement);
[UIView setAnimationDidStopSelector:@selector(afterAnimationStops)];
[UIView commitAnimations];
}
まだ258の高さを返します - いいえサイコロを。 – Brittany
この値はどこで記録しましたか? 'UITabBarController'を使用していますか? – trungduc
はい、ビューはUITabBarControllerに埋め込まれています。私はanimateTextViewの内部とkeyboardWillChangeの内部に値を記録します。 – Brittany