2015-03-03 50 views
1

我有一個Navigation View(導航欄在頂部),其中有一個scrollView,以及scrollView中的幾個文本字段。我設置了代碼,以便在顯示鍵盤時,如果內容隱藏文本字段,則內容向上移動。從前一個視圖中選擇的模式是模式化的,因此它會彈出窗口(在iPad上)。scrollView在鍵盤隱藏後沒有返回到正確的位置

一切正常,但當鍵盤被解散時,scrollView返回到比原來開始的位置更高的位置(頂部字段隱藏在頂部導航欄後面)。

我發現這個問題是這樣的代碼中:

func keyboardWillBeHidden() { 
    println("Keyboard will be hidden") 
    let contentInsets = UIEdgeInsetsZero 
    scrollView.contentInset = contentInsets 
    scrollView.scrollIndicatorInsets = contentInsets 
} 

這個問題該生產線是scrollView.contentInset = contentInsets。我覺得我需要將44(導航欄的高度)添加到scrollView的頂部位置,以便返回到其正確位置,但我不知道如何執行此操作。

我也注意到一旦發生這種情況,scrollView不能再滾動(它似乎卡住了)。

回答

1

在開始任何編輯之前,您可以存儲當前的scrollview.contentInset。

後來編輯結束時,可以將其設置爲放在它所屬的位置。不要使用硬編碼44.

+0

好吧,我在'keyboardWasShown()'的一個變量中捕獲了'scrollView.contentInset',然後在''scrollView.contentInset''和'scrollView.scrollIndicatorInsets'中設置' keyboardWillBeHidden()'。 雖然這解決了我的問題,但我不知道是否有更好的方法來做到這一點。在故事板內部,'scrollView'隱藏在頂部的_placeholder_導航欄後面; 'scrollView'是完整的600x600。我需要這樣做,因爲在運行時考慮了條形所需的空間,而不是在故事板中考慮。 – user2985898 2015-03-03 17:42:39

+0

我做了同樣的事情,但仍然沒有回到原來的位置 – teapeng 2017-03-09 02:18:58