演示鏈接:https://github.com/harshilkotecha/UIScrollViewWhenKeyboardAppearInSwift3
當你有多個TextView的它是如此的困難所以最好的解決方案 - >
第1步:添加UITextFieldDelegate
class ScrollViewController: UIViewController,UITextFieldDelegate {
第2步:創建新的IBOutlet中但不要與任何文本字段連接
// get current text box when user Begin editing
@IBOutlet weak var activeTextField: UITextField?
步驟3:寫此二方法當用戶聚焦文本提交對象傳遞activeTextField
基準和存儲
// get current text field
func textFieldDidBeginEditing(_ textField: UITextField)
{
activeTextField=textField;
}
func textFieldDidEndEditing(_ textField: UITextField)
{
activeTextField=nil;
}
步驟5:在viewDidLoad中setNotificationKeyboard集通知
override func viewWillAppear(_ animated: Bool) {
// call method for keyboard notification
self.setNotificationKeyboard()
}
// Notification when keyboard show
func setNotificationKeyboard() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(notification:)), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden(notification:)), name: .UIKeyboardWillHide, object: nil)
}
步驟6:兩種方法隱藏和顯示鍵盤
func keyboardWasShown(notification: NSNotification)
{
var info = notification.userInfo!
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height+10, 0.0)
self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets
var aRect : CGRect = self.view.frame
aRect.size.height -= keyboardSize!.height
if let activeField = self.activeTextField
{
if (!aRect.contains(activeField.frame.origin))
{
self.scrollView.scrollRectToVisible(activeField.frame, animated: true)
}
}
}
// when keyboard hide reduce height of scroll view
func keyboardWillBeHidden(notification: NSNotification){
let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0,0.0, 0.0)
self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets
self.view.endEditing(true)
}
您可以使用contentoffset滾動滾動視圖。 – Prabhat
使用https://github.com/hackiftekhar/IQKeyboardManager,它會自動檢測textField或textView並相應地管理所有鍵盤處理。 –
@ZahidShabbir:在textview的情況下,scrollview不滾動或滾動一點? – Poles