你可以下載一個示例項目演示下面這裏的問題會自動試圖大小時失去高度而是將它們錨定到視圖/輸入視圖,以便理論上系統將根據環境和方向確定它們的高度,在某些情況下,高度變爲0並且鍵盤被壓碎(除了具有混凝土高度的任何物體如自我尺寸的標籤或按鈕)。鍵盤的延長iOS中10在某些情況下
這似乎只發生在iOS 10上。在iOS 9上,子視圖正確調整大小以適應默認的自動鍵盤高度。
有幾種情況可以顯示,這個項目演示了一個基本的場景。它開始用默認的「下一個鍵盤」按鈕,基本的鍵盤擴展模板,並配備了2點大小的限制:
self.nextKeyboardButton.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
self.nextKeyboardButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
接下來,我們創造,我們要填補上海華盈的空間,其他單一視圖沒有確定具體的大小本身:
let anotherView = UIView()
anotherView.backgroundColor = UIColor.red
anotherView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(anotherView)
anotherView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
anotherView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
anotherView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
現在,讓我們說,我們只是要錨定到我們的鍵盤上海華底部這一新觀點。我們只是做這樣的事情:
anotherView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
結果看起來是這樣的:
這種佈局正是我們期望的。現在,讓我們將新視圖定位到下一個鍵盤按鈕的頂部。我們擺脫我們剛纔添加的約束,並與
anotherView.bottomAnchor.constraint(equalTo: self.nextKeyboardButton.topAnchor).isActive = true
邏輯上取代它,得到的高度應該是相同的(由系統決定)
結果現在是這樣的:
在iOS 9上,它的行爲與預期相同,但在iOS 10中,靈活高度視圖的大小調整爲0,剩下的全部爲固定高度按鈕。
沒有關於衝突約束的消息。我試圖找出可能導致這種情況的原因以及爲什麼它只會在iOS 10上發生。
你有沒有得到任何東西回答?我們面臨同樣的問題,如果您有任何問題,我很樂意爲您提供更新。 –
沒有。只是一個錯誤,你必須找到一種方法來制定你的約束而不觸發它。對我來說只是試錯。 – Dima
@Dima你對這個問題有任何答案嗎? – Ramakrishna