【问题标题】:Offset UITextField - Emoji-layout偏移 UITextField - 表情符号布局
【发布时间】:2016-04-20 06:04:07
【问题描述】:

每当键盘处于活动状态时,我都会尝试抵消 UITextField,它运行良好,直到我尝试了 Emoji 布局。有没有办法检测键盘输入的类型,所以我可以找出高度差? 谢谢

【问题讨论】:

  • 您可以使用文本字段委托来检测用户是否输入了表情符号。见This question
  • @EICaptain 我相信他的问题不是设置偏移量(他通过简单的文本输入来做到这一点)。他在处理表情符号输入时遇到问题,因此他想从键盘检测 输入类型

标签: ios xcode swift


【解决方案1】:

不要使用UIKeyboardDidShowNotification/UIKeyboardDidHideNotification 观察者,而是使用UIKeyboardWillChangeFrameNotification 观察者,它会触发每个事件:键盘隐藏、键盘显示和键盘更改框架。

像这样:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardAction), name: UIKeyboardWillChangeFrameNotification, object: nil)

【讨论】:

    【解决方案2】:

    您可以使用键盘通知

    func getKeyboardHeight() {
        let defaultCenter = NSNotificationCenter.defaultCenter()
        defaultCenter.addObserver(self, selector: "keyboardWillChangeFrame:", name: UIKeyboardWillChangeFrameNotification, object: nil)
    }
    
    func keyboardWillChangeFrame(notification : NSNotification){
        let keyboardFrame = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
        let keyboardheight = keyboardFrame.height
    }
    

    您可以根据获得的高度调整文本字段的框架。 看图片。 选择表情符号之前的图像 1。

    选择表情符号后的图像 2

    【讨论】:

    • 这是显示键盘外观通知的代码,而不是检测是否正在输入表情符号。如果您对此问题有任何疑问,请通过 cmets 询问 OP
    • 可以获取键盘高度,动态调整textfield框架
    • 他已经在这样做了。他的问题是当用户输入表情符号时他遇到了问题,因为他想检测 输入类型
    【解决方案3】:

    感谢大家的帮助,我找到了答案: 我正在使用这条线:

    if let keyboardSize = (notifcation.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue().size{
    

    我将notifcation.userInfo的key-value改为UIKeyboardFrameEndUserInfoKey,问题就解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 2019-07-22
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多