Ios 将textField更改为textView时出现问题?
我有一个带有几个文本字段的viewController。过了一会儿,我发现真的没有办法将文本字段变成多行(如果你问我的话,那就太愚蠢了!) 所以我把所有的文本字段都改成了文本视图,这样用户就可以写几行了。现在,在我将大量代码组合到这些文本字段之前,因为让文本字段根据键盘大小上下移动的复杂性等等 更糟糕的是,我想我可以把所有的单词“textField”改成textView,然后键盘也会这样。我不能。以下是我的代码(更改为尝试适应新的文本视图,而不是旧的文本字段): 应用程序编译得很好,但当我按任意textView输入输入时,键盘的istead弹出,应用程序崩溃,我得到:“线程1:致命错误:在解包可选值时意外发现零” 这显示在“let keyboardSize=…”行上 有人能看出我的错误吗?或者告诉我另一种根据键盘移动视图的方法-当使用文本视图而不是文本字段时 另一方面。。。谁能向我解释一下,为什么同时存在“文本字段”和“文本视图”??看在上帝的份上,苹果为什么不把这些东西放在一起呢 首先谢谢!:) 使用pod 在开发iOS应用程序时,我们经常遇到iPhone键盘向上滑动并覆盖UITextField/UITextView的问题Ios 将textField更改为textView时出现问题?,ios,swift,keyboard,textview,textfield,Ios,Swift,Keyboard,Textview,Textfield,我有一个带有几个文本字段的viewController。过了一会儿,我发现真的没有办法将文本字段变成多行(如果你问我的话,那就太愚蠢了!) 所以我把所有的文本字段都改成了文本视图,这样用户就可以写几行了。现在,在我将大量代码组合到这些文本字段之前,因为让文本字段根据键盘大小上下移动的复杂性等等 更糟糕的是,我想我可以把所有的单词“textField”改成textView,然后键盘也会这样。我不能。以下是我的代码(更改为尝试适应新的文本视图,而不是旧的文本字段): 应用程序编译得很好,但当我按任意
IQKeyboardManager
允许您防止键盘向上滑动并覆盖UITextField/UITextView
而无需编写任何代码或进行任何其他设置。要使用IQKeyboardManager,只需将源文件添加到项目中即可。要使用pod
在开发iOS应用程序时,我们经常遇到iPhone键盘向上滑动并覆盖UITextField/UITextView的问题
IQKeyboardManager
允许您防止键盘向上滑动并覆盖UITextField/UITextView
而无需编写任何代码或进行任何其他设置。要使用IQKeyboardManager
,只需将源文件添加到项目中。我不知道为什么要更改self.view
的框架self.view
是视图控制器的内容视图。我不知道为什么要更改self.view
的框架self.view
是视图控制器的内容视图。
override func viewDidLoad() {
super.viewDidLoad()
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(keyboardDidShow), name: UIResponder.keyboardWillShowNotification, object: nil)
notificationCenter.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func keyboardDidShow(notification: NSNotification) {
let info:NSDictionary = notification.userInfo! as NSDictionary
let keyboardSize = (info[UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
let keyboardY = self.view.frame.height - keyboardSize.height
let editingTextFieldY:CGFloat! = self.activeTextView.frame.origin.y
if self.view.frame.origin.y >= 0 {
// Checking if the textfield is really being hidden:
if editingTextFieldY > keyboardY - 60 {
UIView.animate(withDuration: 0.25, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: self.view.frame.origin.y - (editingTextFieldY - (keyboardY - 60)), width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
} } }
@objc func keyboardWillHide(notification: NSNotification) {
UIView.animate(withDuration: 0.25, delay: 0.0, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}