Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios键盘将显示延迟触发的通知_Ios_Notifications_Keyboard - Fatal编程技术网

ios键盘将显示延迟触发的通知

ios键盘将显示延迟触发的通知,ios,notifications,keyboard,Ios,Notifications,Keyboard,我在iOS 8上遇到了一个奇怪的错误,当我尝试同步动画时,键盘在选择文本字段后向上移动。 具体来说,我正在尝试获取键盘的高度,以便在注册键盘WillShow通知后使用以下代码了解文本字段向上移动的距离: - (void)keyboardWillShow:(NSNotification *)notification { CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoK

我在iOS 8上遇到了一个奇怪的错误,当我尝试同步动画时,键盘在选择文本字段后向上移动。 具体来说,我正在尝试获取键盘的高度,以便在注册键盘WillShow通知后使用以下代码了解文本字段向上移动的距离:

- (void)keyboardWillShow:(NSNotification *)notification
{
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
self.keyboardHeight = keyboardSize.height;
[self moveToolbarUp];
}

-(void)moveToolbarUp
{
self.keyboardExpanded = YES;
CGRect frame = self.toolbar.frame;
DLog(@"keyboard height now:%f",self.keyboardHeight);
frame.origin.y = (self.view.frame.size.height-toolbarHeight-self.keyboardHeight);
[UIView animateWithDuration:0.1 animations:^{
    self.toolbar.frame = frame;
}];
}
但是,如果我尝试在keyboardwillshow方法上设置一个断点,我可以看到在调用该方法时,键盘已经一直向上,因此动画会延迟,键盘会弹出,然后一秒钟左右,文本字段会随之出现。 还有其他人经历过这个错误吗?我运行的是iphone5s,ios8.0.2


谢谢

这不是一个错误。事实上,您可以删除animateWithDuration调用。在iOS 8中,keyboardWillShow:在键盘动画中调用。你不需要同步任何东西;您所做的任何事情都将自动成为动画的一部分。

嗯,我试过了,但仍然没有在正确的时间制作动画。整个键盘将一直向上移动,然后文本字段在大约一秒钟后跟随。它对你正确吗?是的,但我有点不清楚你想做什么。一秒钟左右的时间听起来有点长,但在文本字段或滚动视图中,它在键盘完成动画设置后滚动是正常的。我不认为这令人反感。这个项目展示了一个典型的策略:是的,我面临着同样的问题。键盘首先可见,然后键盘选择器将显示。然而,这只是在我的应用程序发布后才第一次发生。