Swift 4 中的键盘重叠 UITextField
keyboard overlapping UITextField in Swift 4
我正在尝试处理 UITextField 的滚动以避免键盘与它重叠。 Click here to view current OUTPUT i am getting ]StoryBoard Screenshot。当我单击最后一个文本字段时,我试图滚动视图 ..ie 密码字段。当我点击密码字段时,只有电子邮件字段即第二个向上滚动。第一个和最后一个字段没有滚动发生。我该如何解决这个问题?
`
//
// ViewController.swift
import UIKit
class ViewController: UIViewController,UITextFieldDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var name: UITextField!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var password: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func textFieldDidBeginEditing(_ textField: UITextField) {
// Begin
switch textField.tag {
case 0...1:
print("DO NOTHING")
default:
print("Do Scroll")
scrollView.setContentOffset(CGPoint(x:0,y:100) , animated: true)
}
}
func textFieldDidEndEditing(_ textField: UITextField) {
// End
scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// Return
if textField.tag == 0
{
email.becomeFirstResponder()
}
else if textField.tag == 1
{
password.becomeFirstResponder()
}
else if textField.tag == 2
{
textField.resignFirstResponder()
}
return true
}
}
`
您需要将所有文本字段移动到滚动视图,如下所示。
除非你真的想自己处理逻辑,否则我建议你 IQKeyboardManager 试试看!
这是一个简单的 CocoaPod 库,您可以在您的 appDelegate 中导入并启用它,嗯……仅此而已。
它是一个无代码库,因此您真的不必再考虑它,因为它会接管并处理整个应用程序中每个文本字段的重新定位。
在 Whosebug 和 YouTube 上有多种键盘重叠问题的解决方案。它们都是编辑事件处理的变体。对于懒惰和时间有限的人(比如我),我建议只在滚动视图的底部使用固定高度的页脚(有或没有内容的视图)。我通常会在那里放置不同种类的免责声明和帮助信息。此页脚将始终 "push" 键盘上方的文本视图。
我正在尝试处理 UITextField 的滚动以避免键盘与它重叠。 Click here to view current OUTPUT i am getting ]StoryBoard Screenshot。当我单击最后一个文本字段时,我试图滚动视图 ..ie 密码字段。当我点击密码字段时,只有电子邮件字段即第二个向上滚动。第一个和最后一个字段没有滚动发生。我该如何解决这个问题?
`
//
// ViewController.swift
import UIKit
class ViewController: UIViewController,UITextFieldDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var name: UITextField!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var password: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func textFieldDidBeginEditing(_ textField: UITextField) {
// Begin
switch textField.tag {
case 0...1:
print("DO NOTHING")
default:
print("Do Scroll")
scrollView.setContentOffset(CGPoint(x:0,y:100) , animated: true)
}
}
func textFieldDidEndEditing(_ textField: UITextField) {
// End
scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// Return
if textField.tag == 0
{
email.becomeFirstResponder()
}
else if textField.tag == 1
{
password.becomeFirstResponder()
}
else if textField.tag == 2
{
textField.resignFirstResponder()
}
return true
}
}
`
您需要将所有文本字段移动到滚动视图,如下所示。
除非你真的想自己处理逻辑,否则我建议你 IQKeyboardManager 试试看!
这是一个简单的 CocoaPod 库,您可以在您的 appDelegate 中导入并启用它,嗯……仅此而已。
它是一个无代码库,因此您真的不必再考虑它,因为它会接管并处理整个应用程序中每个文本字段的重新定位。
在 Whosebug 和 YouTube 上有多种键盘重叠问题的解决方案。它们都是编辑事件处理的变体。对于懒惰和时间有限的人(比如我),我建议只在滚动视图的底部使用固定高度的页脚(有或没有内容的视图)。我通常会在那里放置不同种类的免责声明和帮助信息。此页脚将始终 "push" 键盘上方的文本视图。