[英]Move the screen up when keyboard appears depending of the textView. Swift
I've tried to move the screen up when keyboard appears. 当键盘出现时,我试图将屏幕向上移动。 I did it with success but I need to know how to scroll the view only when de bottom
UITextView
is clicked, and not with the top TextView
because keyboard just touches the TextView
below. 我成功完成了它但我需要知道如何仅在单击底部
UITextView
时滚动视图,而不是使用顶部TextView
因为键盘只是触及下面的TextView
。
App is this: 应用是这样的:
class viewControllerCuatro: UIViewController, UITextViewDelegate {
@IBOutlet weak var textViewInteriorUno: UITextView!
@IBOutlet weak var textViewInteriorDos: UITextView!
override func viewDidLoad() {
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Atrás", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
**NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: self.view.window)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: self.view.window)**
}
**func keyboardWillShow(sender: NSNotification) {**
// 1
let userInfo: [NSObject : AnyObject] = sender.userInfo!
// 2
let keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue.size
let offset: CGSize = userInfo[UIKeyboardFrameEndUserInfoKey]!.CGRectValue.size
// 3
if keyboardSize.height == offset.height {
UIView.animateWithDuration(0.1, animations: { () -> Void in
self.view.frame.origin.y -= keyboardSize.height
})
} else {
UIView.animateWithDuration(0.1, animations: { () -> Void in
self.view.frame.origin.y += keyboardSize.height - offset.height
})
}
}
**func keyboardWillHide(sender: NSNotification)** {
let userInfo: [NSObject : AnyObject] = sender.userInfo!
let keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]!.CGRectValue.size
self.view.frame.origin.y += keyboardSize.height
}
**override func viewWillDisappear(animated: Bool)** {
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: self.view.window)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: self.view.window)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if textViewInteriorUno.text == "" || textViewInteriorUno.text.isEmpty == true || textViewInteriorDos.text == "" || textViewInteriorDos.text.isEmpty == true {
textViewInteriorUno.resignFirstResponder()
textViewInteriorDos.resignFirstResponder()
}
else{
self.textViewInteriorUno.resignFirstResponder()
self.textViewInteriorDos.resignFirstResponder()
}
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool{
var shouldReplace = true // For most cases, return true, only modify if we have a special case
// If the textView is 'textViewInteriorUno'
if textView.isEqual(textViewInteriorUno) {
let newLength = textViewInteriorUno.text.utf16.count + text.utf16.count - range.length
shouldReplace = newLength <= 12 // will be true if the length is <= 12
}
else if textView.isEqual(textViewInteriorDos) {
let newLength = textViewInteriorDos.text.utf16.count + text.utf16.count - range.length
shouldReplace = newLength < 13 // Will be true if the length > 6
}
return shouldReplace
}
IQKeyboardManager was a godsend for me! IQKeyboardManager对我来说是个天赐之物!
Step 1: 第1步:
All you have to do is download the project from https://github.com/hackiftekhar/IQKeyboardManager and move the IQKeyboardManagerSwift directory from the demo project to your project. 您所要做的就是从https://github.com/hackiftekhar/IQKeyboardManager下载该项目,并将IQKeyboardManagerSwift目录从演示项目移动到您的项目中。
Make sure the IQKeyboardManagerSwift directory is the right location in your project once you move it. 移动后,确保IQKeyboardManagerSwift目录是项目中的正确位置。
Step 2: 第2步:
Then In AppDelegate.swift, just enable IQKeyboardManager in your application function. 然后在AppDelegate.swift中,只需在应用程序函数中启用IQKeyboardManager。
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
// This is the only line of code you need to manually add
// in order for IQKeybaordManager to work. Thats it.
IQKeyboardManager.sharedManager().enable = true
return true
}
}
That's it! 而已! Now your keyboard will slide up and move the view accordingly.
现在,您的键盘将向上滑动并相应地移动视图。 Props to the creator of this framework, makes our lives a lot easier.
对这个框架的创建者的道具,使我们的生活更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.