私は自分のコードをより整理して再利用可能にしようとしています。キーボードが表示されているときにスクロールビューを上に移動させ、キーボードを非表示にしたときにスクロール表示をスクロールできるようにする関数と通知があります。それはすべて機能している。しかし、私はこれらの関数をイメージすることはUIViewcontrollerの内部にscrollViewを持つ私のプロジェクトの複数の部分で使用されます。だから私は、複数のView Controllerに同じコードを書くのではなく、より再現可能なコードを作成したいと思っています。素早くコードを整理してください。IOS
現在、私のビューコントローラの1の内側に、私は、コードをより再利用可能にしようとするABIT新しいです
var keyboard = CGRect()
override func viewDidLoad() {
// Check notifications of keyboard activity
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(PostVC.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(PostVC.keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil)
// Tap to hide keyboard
let hideTap = UITapGestureRecognizer(target: self, action: #selector(PostVC.hideKeyboard))
hideTap.numberOfTapsRequired = 1
self.view.userInteractionEnabled = true
self.view.addGestureRecognizer(hideTap)
}
func hideKeyboard() {
self.view.endEditing(true)
}
func keyboardWillShow(notification: NSNotification) {
keyboard = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey]!.CGRectValue())!
UIView.animateWithDuration(0.4) {
self.scrollView.contentSize.height = self.view.frame.size.height + self.keyboard.height/2 + UITabBarController().tabBar.frame.size.height
}
}
func keyboardWillHide(notification: NSNotification) {
UIView.animateWithDuration(0.4) {
self.scrollView.contentSize.height = 0
}
}
を持っています。私は新しいクラスを作成するか、UIViewControllerの拡張を作成してそこに配置する必要があるかどうかはわかりません。私はのUIViewControllerの拡張を作成しようとした
func keyboardWillShow(notification: NSNotification, _scrollView: UIScrollView) { }
ような何かを行うとscrollviewのインスタンスを渡しています:関数に(@IBOutlet弱いのvar scrollView UIScrollViewの!)。しかし、その後、私は#selector(keyboardWillShow(_:, keyboard: keyboard, scrollView: scrollView)
で問題に遭遇します。それは私に式のリストの期待される表現を言っているエラーを与えます(私はそれは_について不平を言っていると思います)。私はこれを行うのに間違った道にいるかもしれない。誰でも助けてもらえますか?
おかげで、
コードをアプリのさまざまな場所で再利用できる場合は、コードを共有するすべてのView Controllerの基本クラスを作成することをお勧めします。 –
あなたは 'UIScrollView'のようなものについて[クラス拡張](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html)を作成しましたか? – ZGski