我需要有人向我解釋這一點,因爲它沒有任何意義。UIKeyboard的框架是20像素關
當從userInfo
使用UIKeyboardFrameEndUserInfoKey
獲取UIKeyboards幀並進行數學運算以使視圖看起來堆疊在鍵盤上時,我需要改變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個像素,從而消除差異。這到底是怎麼回事?