코드를 체계적이고 재사용 가능하게하려고합니다. 키보드가 나타나면 스크롤보기를 위로 이동시키고 키보드가 숨겨지면 아래로 스크롤 할 수 있도록하는 몇 가지 기능과 알림이 있습니다. 그것은 모두 작동합니다. 그러나, 나는 이러한 기능을 이미 UIViewcontroller 내부의 scrollView가있는 프로젝트의 여러 부분에서 사용될 것입니다. 그래서 나는 여러 개의 뷰 컨트롤러에 동일한 코드를 작성하는 것이 아니라 좀 더 resuable 한 코드를 만들고 싶다.신속한 코드 구성 IOS
현재, 내보기 컨트롤러 중 하나 안에, 내가 코드를 더 재사용 할 수 있도록 노력을 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)
일을하는 데 어려움을 겪습니다. 그것은 표현의 목록에서 기대되는 표현을 말하는 오류를줍니다 (나는 그것이 _에 대해 불평이라고 생각합니다). 나는이 일을 완전히 잘못된 길로 가고 있을지 모른다. 누구든지 도와주세요.
감사합니다,
코드가 앱의 여러 위치에서 재사용 될 수있는 경우 코드를 공유하는 모든보기 컨트롤러에 대한 기본 클래스를 만드는 것이 좋습니다. –
'UIScrollView'와 같은 것에 [클래스 확장] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html)을 만들었습니까? – ZGski