我正在開發一款應用程序,該應用程序最初爲iOS 7製作的工作非常好,但現在移至iOS 8後,事情無法正常工作。基本上,我有一個按鈕的看法。當我點擊該按鈕時,帶有UITextField的另一個UIView「從可見屏幕區域下方的位置」滑動「到屏幕上。當我點擊UITextField鍵入內容時出現問題,鍵盤出現,但UITextField的視圖返回到離開屏幕的初始位置。這在iOS 7中沒有發生,所以我認爲這與iOS 8自動佈局的變化有關。有誰知道我可以做些什麼來解決這個問題?如果我不需要,我寧願不關閉自動佈局,因爲我的應用的很大一部分依賴於它。iOS 8 AutoLayout更改視圖的位置
下面是一些代碼,告訴你我指的是什麼。在我的例子,「locationField」是被竊聽的按鈕,「locationView」是其滑動到屏幕上的UIView:
- (IBAction) locationFieldTapped:(UIButton *)sender {
[self slideViewUp:_locationView];
}
- (void) slideViewUp:(UIView *)slidingView {
if (viewIsSlidUp) {
return;
}
CGRect frame = slidingView.frame;
int availableHeight = self.view.frame.size.height;
// don't move view up if it's already moved up or in the process of moving up
if (frame.origin.y < availableHeight) {
return;
}
viewIsSlidUp = YES;
// move view just off screen for animation start, in case it's not already there
frame.origin.y = availableHeight;
slidingView.frame = frame;
[UIView animateWithDuration:0.5f animations:^{
CGRect newFrame = frame;
newFrame.origin.y = availableHeight - CGRectGetHeight(frame);
slidingView.frame = newFrame;
}];
}
使用自動佈局時,不應設置任何框架。您應該通過修改約束來移動您的視圖。 – rdelmar 2015-02-07 07:09:11