键盘显示时如何以编程方式移动StatView
Posted
技术标签:
【中文标题】键盘显示时如何以编程方式移动StatView【英文标题】:How to move StatView programmatically when keyboard shows 【发布时间】:2020-03-11 10:14:46 【问题描述】:我有一个登录页面,其中有两个文本视图和一个堆栈视图中的按钮 当键盘显示并消失时,我正在尝试移动堆栈视图,因为我想知道如何以编程方式执行此操作
【问题讨论】:
【参考方案1】:当键盘显示/隐藏时,ios 会发送 2 个通知
UIKeyboardWillShow
UIKeyboardWillHide
您可以做的是观察这些通知,然后移动 stackView 的框架,例如
@objc func keyboardWillShow()
if stackView.frame.origin.y == 0
stackView.frame.origin.y -= 200
@objc func keyboardWillHide()
if stackView.frame.origin.y != 0
stackView.frame.origin.y = 0
这里是观察这些通知的方法。 (在您的 viewDidLoad 函数中使用此代码)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: Notification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: Notification.Name.UIKeyboardWillHide, object: nil)
【讨论】:
我添加了该代码但收到此错误,类型“Notification.Name”(又名“NSNotification.Name”)没有成员“UIResponder” 通知名称是 UIViewController.keyboardWillShow 和 UIViewController.keyboardWillHide。可以试试吗? 这行得通,但现在它说使用未解析的标识符“stackView”它不会让我在使用 if 语句时访问 stackView 用实际堆栈视图的名称替换“stackView”...【参考方案2】:斯威夫特 4.2
override func viewDidLoad()
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIWindow.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIWindow.keyboardWillHideNotification, object: nil)
@objc func keyboardWillShow(notification: NSNotification)
print("keyboardWillShow")
@objc func keyboardWillHide(notification: NSNotification)
print("keyboardWillHide")
如果仍然有任何错误检查以下链接:
LINK FOR KEYBOARD HIDE/SHOW
【讨论】:
以上是关于键盘显示时如何以编程方式移动StatView的主要内容,如果未能解决你的问题,请参考以下文章