2017-09-01 109 views
0

我有一個UIViewController,它內部有一個分隔的UIView。這個視圖有一些文本框。如果用戶點擊其中一個字段,該視圖將自動適合他的center.y。最後,用戶點擊的文本框將位於屏幕中間。但在我看來,這個觀點並沒有改變。在模擬器中效果很好,但在真實手機上沒有任何反應。只有輸出center.y的位置發生變化。我修復了約束條件下的UIViewiOS - center.y不會在視圖中移動

這裏是點擊動作的代碼。

func textFieldDidBeginEditing(_ textField: UITextField) { 
    textField.layer.borderWidth = 0 
    textField.clearsOnBeginEditing = true 
    textField.text = "" 
    print("Began") 
    let textFieldCoInView = textField.center 
    let coInSelf = self.dataView.convert(textFieldCoInView, to: self.view) 
    print(coInSelf) 
    print(self.view.center.y) 
    if(coInSelf.y > self.view.center.y) { 
     dataViewOriginY = dataView.center.y 
     print("Works") 
     self.dataView.center.y = self.dataView.center.y - (coInSelf.y - self.view.center.y) 
     print(self.dataView.center.y) 
    } 
} 
+0

你提供什麼約束來查看? –

回答

0

「我固定約束的UIView」。

如果您嘗試移動的視圖對其有所限制,則自動佈局可能會與您對戰。要測試該理論,請嘗試關閉您正在移動的視圖的約束條件。

如果是這樣的話,你可能需要做一些事情,比如讓出口到約束和改變代碼中的值(或者不使用約束)。

在任何情況下,我想你會發現自動佈局正在與你作戰,並將視圖保留在它的約束所屬的位置。

0

請檢查您爲UIView設置的約束條件。並檢查控制檯是否有錯誤。約束可以阻止代碼更改視圖。也許關閉約束並檢查代碼是否工作。

相關問題