所以我現在很困惑,因爲我的UIScrollView行事很奇怪。UIScrollView奇怪的行爲與UITextField/UIPickerView
基本上,我有一個UIScrollView約爲iPhone 6的高度的兩倍,我使用它來顯示一些使用iOS圖表的圖形,所以我將它設置爲能夠垂直滾動和彈跳,但不能滾動也不水平反彈。所有的圖形,以及一些額外的UITextFields和UILabel都嵌入在一個單獨的「主體視圖」中,該主體視圖與UIScrollView的框架對齊,這似乎是常見做法。因此,我的觀點的層次結構是這樣的:
這個工作很好,直到今天我注意到,當我按下這個UIScrollView的一個特定的UITextField,這將觸發一個UIPickerView,所有的突然我的滾動視圖開始允許水平彈跳。當它們被輕敲時,對於正文視圖上的兩個其他UITextField,則不會發生此行爲。
我已經檢查了所有通過點擊受影響的文本字段觸發的代碼,並且沒有任何內容直接編輯任何UI對象的框架或邊界。實際上,當文本字段被點擊時調用的唯一函數是textFieldDidBeginEditing
。我已經附上了這個函數的代碼,但我相當確定它不是問題。
我的下一個懷疑是UIPickerView彈出已經搞亂我的滾動視圖和/或它的嵌入式視圖的尺寸。我不太確定這是否可能/可能,但整件事情讓我非常難過。
這裏是我的代碼:
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == overallTimeframeTextField {
...
// Not the problematic text field
} else if textField == subjectTimeframeTextField {
...
// Also not the problematic text field
} else { // Affected text field
// Set the text of the text field
if textField.text == "" {
// This is executed in this scenario
textField.text = subjectPickerData[0]
} else {
...
}
}
}
下面是一個簡短概述GIF我的問題。你可以看到我向下滾動頁面,在那裏我無法水平反彈,然後一旦我在文本字段上標記,突然滾動視圖允許反彈。
我幾乎失去了這個問題,所以任何幫助,將不勝感激。
編輯
爲了澄清,我明確地聲明我的滾動視圖的內容大小等於想要的高度,使用戶在屏幕的寬度。然後我設置bodyView的寬度等於相同的值。
// Fit the content to the screen
scrollView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: 1200)
bodyView.frame.size.width = UIScreen.main.bounds.width
我也有強制滾動視圖和身體既着眼於具有相同的寬度爲UIViewController的默認子視圖(滾動視圖在我的層次中的父約束:這是viewDidAppear
用下面的代碼完成)。
我注意到一個有趣的事情是,當我打印我的滾動視圖的寬度和我的身體視圖時的意見負載,我收到了iPhone 6以下的輸出:
385.0
385.0
這是正確的,因爲這是iPhone 6的寬度。然而,當我點擊的文本字段,然後打印相同的價值觀,我得到這樣的輸出:
385.0
384.0
所以,出於某種原因,我的身體的看法是一個點比我的滾動視圖小。當我點擊文本字段時,我嘗試將身體視圖的寬度設置爲等於滾動視圖,就像我在viewDidAppear
函數中那樣,但這沒有效果。
在UIPickerView而言,我初始化pickerview我的類的實例變量,像這樣:
var subjectPickerView = UIPickerView()
我然後分配這個選擇器視圖是文本字段中輸入視圖中viewDidLoad
:
textField.inputView = subjectPickerView
所以我不知道這是否使得選擇器視圖的滾動視圖的子視圖,但它只是在這種情況下更換鍵盤。
是您的滾動視圖反彈垂直啓用? – CodeChanger
@CodeChanger是的,「反彈」和「垂直反彈」已啓用,「水平反彈」未啓用。 –
*「我已將它設置爲...既不滾動又不水平反彈」*滾動的能力基於contentSize--您是明確設置還是使用約束?你說*「UITextField ---觸發一個UIPickerView」*你如何顯示選擇器視圖?它是滾動視圖的子視圖嗎? – DonMag