iOSでは自前で実装する必要があります。
以下は、ScrollVIewを利用したサンプルです。
Keyboardが表示されたタイミングで、ScrollViewのcontentInsetとscrollIndicatorInsetsを変更します。
class AdjustScrollViewControll : NSObject{
var scrollView : UIScrollView?
init(scrollView : UIScrollView){
self.scrollView = scrollView
}
func addObservers(){
let notificationCenter = NSNotificationCenter.defaultCenter()
notificationCenter.addObserver(self, selector: #selector(self.willShowNotification(_:)), name: UIKeyboardWillShowNotification, object: nil)
notificationCenter.addObserver(self, selector: #selector(self.willHideNotification(_:)), name: UIKeyboardWillHideNotification, object: nil)
}
func removeObserviers(){
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func willShowNotification(notification: NSNotification) {
let info = notification.userInfo
let infoNSValue = info![UIKeyboardFrameEndUserInfoKey] as! NSValue
let kbSize = infoNSValue.CGRectValue().size
let contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height + 8, 0.0)
scrollView!.contentInset = contentInsets
scrollView!.scrollIndicatorInsets = contentInsets
}
func willHideNotification(notification: NSNotification) {
let contentInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)
scrollView!.contentInset = contentInsets
scrollView!.scrollIndicatorInsets = contentInsets
}
}
ViewControllerからは次のようにコールします。
class HiddingKeyboardViewController: UIViewController,UITextFieldDelegate {
@IBOutlet weak var scrollView: UIScrollView!
var adjustTextFieldControll : AdjustScrollViewControll?
override func viewDidLoad() {
super.viewDidLoad()
adjustTextFieldControll = AdjustScrollViewControll(scrollView: scrollView)
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
adjustTextFieldControll!.addObservers()
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
adjustTextFieldControll!.removeObserviers()
}
}
0 件のコメント:
コメントを投稿