我正在开发一个 iOS 应用,并且 我有一个消息传递 View ,我想在其中处理这种情况: -> 我在 View 底部有一个输入 View ,除了某些用户被阻止/限制发送消息的条件外,它需要一直可见。 -> 当输入 View 聚焦时,键盘出现,我想将 View 与键盘框架一起移动。 -> 我希望键盘通过表格 View 滚动以交互方式关闭。话虽这么说, View 应该响应键盘平移手势并随之移动 -> 我尝试使用输入附件 View ,但问题是当键盘因表格 View 滚动而被关闭时,输入 View 也被关闭。 -> 我也尝试过使用 willShow/willHide/willChangeFrame 观察者,但是这样一来,响应就不是重点了,它也不会响应键盘交互关闭。 有人对此有解决方案... 感谢您的宝贵时间。
最佳答案
swift 3+: 我查看了 textview 背景并设置了 View 约束 (前导、尾随、底部、固定高度)。为底部约束创建一个@IBOutlet 并在下面的代码中进行管理:
class ViewController: UIViewController {
@IBOutlet var bottomConstraint: NSLayoutConstraint!
@IBOutlet var view_TextViewBg: UIView!
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardDidShow(_:)),
name: NSNotification.Name.UIKeyboardWillShow,
object: nil)
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardDidHide(_:)),
name: NSNotification.Name.UIKeyboardWillHide,
object: nil)
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
// tap.delegate = self
view.addGestureRecognizer(tap)
}
func handleTap(sender: UITapGestureRecognizer? = nil) {
//dissmiss your keyboard here
}
//MARK: Keyboard show
func keyboardDidShow(_ notification: Notification) {
let params = notification.userInfo
let rect: CGRect? = (params?[UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue
bottomConstraint.constant = (rect?.size.height)!
}
//MARK: Keyboard hide
func keyboardDidHide(_ notification: Notification) {
bottomConstraint.constant = 0
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
关于ios - 在 iOS Swift 中使用键盘平移手势处理文本输入 View 移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46430962/