我需要有人向我解释这一点,因为这没有任何意义。
userInfo
从使用中获取 UIKeyboards 框架UIKeyboardFrameEndUserInfoKey
并进行数学运算以使视图看起来像是堆叠在键盘顶部时,我需要相差 20 像素。
数学:
CGRect frame = view.frame;
CGPoint origin = frame.origin;
origin.x = kbFrame.origin.x;
origin.y = kbFrame.origin.y - view.frame.size.height - 20;
frame.origin = origin;
view.frame = frame;
我认为它一定是状态栏,但这是踢球者,我正在视网膜显示器上开发,所以状态栏的高度是 40 像素而不是 20。
然后我添加了从视图到视图的转换
CGRect kbFrame = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
UIWindow * window = [UIApplication sharedApplication].windows[0];
kbFrame = [self.view convertRect:kbFrame fromView:window];
这似乎是固定的;也就是说,我可以消除 20 像素的差异。
真正让我震惊的是,在使用时UIKeyboardFrameBeginUserInfoKey
,键盘的框架位于屏幕底部,这是正确的,但结束框架导致我编码了 20 像素的差异。当我添加转换代码时,它会将键盘向上 20 像素,从而消除差异。这到底是怎么回事?