2015-08-28 72 views
0

在我的iOS應用程序中,我使用了幾個UIViews,其中只有一個顯示在一次。我通過按鈕在這些視圖之間切換。鍵盤推UIView

顯示新:

self.viewPage2.frame = CGRectMake(0,0,320,568) 

隱藏的觀點:

self.viewPage2.frame = CGRectMake(500,0,320,568) 

其中UIViews的包含的UITextField。當我點擊這個文本框時,鍵盤會打開,但是UIView被推離屏幕。

我期望它與textField有關,所以我已經包含了該源代碼。我從

@IBOutlet weak var textFieldSearchValue: UITextField! 

func textFieldDidEndEditing(textField: UITextField) { 
    textFieldSearchValue.resignFirstResponder(); 
} 

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
    return true; 
} 

func textFieldShouldReturn(textField: UITextField) -> Bool { 

    textFieldSearchValue.resignFirstResponder(); 
    return true; 
} 

委託在viewDidLoad中:

textFieldSearchValue.delegate = self 

所以在打開的UIView向上推開鍵盤,並從視圖控制器的初始畫面時會顯示奇怪的事情,沒有我UIViews。此外,UITextField被推離屏幕!

+0

雖然這不是一種解決方案,但當我關閉AutoLayout時,一切正常。當然,我想使用AutoLayout,所以仍然在尋找答案 – Vincent

回答

0

既然你正在尋找解決方案自動佈局,因此你應該考慮幀更新像

self.viewPage2.frame = CGRectMake(500,0,320,568) 

在自動佈局不支持。

您必須更新以上約束才能實現。 如:

self.myViewBottomSpaceConstraint.constant += 256; 
[self.myView updateConstraints]; 

如果你想有超過1個文本字段更好嵌入他們或滾動視圖內的tableView。他們會緩解你的痛苦。

+0

這聽起來合乎邏輯。由於AutoLayout約束混亂了視圖的位置! – Vincent