2014-09-11 51 views
5

我有一個視圖,當我想要改變它的位置時,鍵盤顯示,我使用UIKeyboardWillShowNotification委託更新的位置,並在IOS 7設備完美的工作,但當我嘗試在IOS 8設備上運行它,然後查看不重新定位,幀被更新,因爲我可以在日誌中看到它。IOS 8設置視圖框架不工作

下面是我的代碼

-(void) keyboardWillShow:(NSNotification*) notification{ 

    @autoreleasepool { 
     CGRect frame = _loginFrame.frame; 
     frame.origin.y-=200; 

     DLog(@"login frame %@ ",NSStringFromCGRect(frame)); 
     [UIView animateWithDuration:0.25 animations:^{ 
      [_loginFrame setFrame:frame]; 
     }]; 
    } 

}

但是,當我嘗試在dispatch_after動畫阻止其動畫到新的位置

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    [UIView animateWithDuration:0.25 animations:^{ 
     [_loginFrame setFrame:frame]; 
    }]; 
}); 

任何想法,爲什麼幀不是無dispatch_after動畫到新位置?

謝謝!

注:它看起來像SETFRAME:方法是行不通的,不知道爲什麼,我已經創建了一個基本的ios 8應用程序來測試這個

2014年9月11日18:59:54.836 KeyboardCheck [31215:1451974]鍵盤顯示 2014-09-11 18:59:54.837 KeyboardCheck [31215:1451974] 舊框架 {{60,269},{200,30}} 2014-09-11 18: 59:54.837 KeyboardCheck [31215:1451974] 更新幀{{60,169},{200,30}} 2014-09-11 18:59:55.33 9 KeyboardCheck [31215:1451974] 完成 塊框{{60,269},{200,30}} 2014-09-11 18:59:55.822 KeyboardCheck [31215:1451974] keyboard hide 2014-09-11 18:59:55.822 KeyboardCheck [31215:1451974] 舊幀{{60,269},{200,30}} 2014年9月11日18:59:56.324 KeyboardCheck [31215:1451974] 完成 塊框{{60,269},{200,30}}

+1

是否使用自動佈局? – Fogmeister 2014-09-11 14:29:12

+1

如果'dispatch_after'工作,大部分是由您使用自動佈局引起的。正確的做法是更新約束條件而不是設置框架。 – 2014-09-11 14:34:24

+0

是的我使用自動佈局,但我沒有在IOS 7中的這個問題,約束被設置爲左,右,底部間距 – 2014-09-11 14:57:23

回答