在 iOS Swift 中使用键盘平移手势处理文本输入视图移动
Posted
技术标签:
【中文标题】在 iOS Swift 中使用键盘平移手势处理文本输入视图移动【英文标题】:Handle text input view movement with keyboard pan gesture in iOS Swift 【发布时间】:2017-09-26 15:54:55 【问题描述】:我正在开发一个 ios 应用,并且 我有一个消息视图,我想在其中处理这种情况: -> 我在视图底部有一个输入视图,它需要一直可见,除了一些用户被阻止/限制发送消息的标准。 -> 当输入视图聚焦时,键盘出现,我想将视图与键盘框架一起移动。 -> 我希望键盘通过表格视图滚动以交互方式关闭。话虽如此,视图应该响应键盘平移手势并随之移动 -> 我尝试使用输入附件视图,但问题是当键盘被表格视图滚动解除时,输入视图也被解除。 -> 我也尝试使用 willShow/willHide/willChangeFrame 观察者,但是这样,响应不是重点,它不会响应键盘交互解除。 有没有人解决这个问题... 感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:Swift 3+: 我已经查看了 textview 背景并设置了视图的约束(前导、尾随、底部、固定高度)。为底部约束创建一个@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 Swift 中使用键盘平移手势处理文本输入视图移动的主要内容,如果未能解决你的问题,请参考以下文章