相关疑难解决方法(0)

用键盘上的按钮显示UIView,比如Skype,Viber messengers(Swift,iOS)

我想创建附件视图,放置在输入附件视图下,通过键盘,如Skype App或Viber:

在此输入图像描述

我已经在这里问过这样的问题,但是这个问题的建议解决方案并不那么优雅,因为当我将滚动视图拖到顶部时,我希望我的附件UIView向下移动键盘(我使用UIScrollViewKeyboardDismissModeInteractive).

所以我创建了一个函数,找出视图,键盘和我的自定义输入附件视图放在哪里:

    func findKeyboardView() -> UIView? {
       var result: UIView? = nil

       let windows = UIApplication.sharedApplication().windows
       for window in windows {
           if window.description.hasPrefix("<UITextEffectsWindow") {
               for subview in window.subviews {
                   if subview.description.hasPrefix("<UIInputSetContainerView") {
                       for sv in subview.subviews {
                           if sv.description.hasPrefix("<UIInputSetHostView") {
                               result = sv as? UIView
                               break
                           }
                       }
                       break
                   }
               }
              break
           }
       }
       return result
   }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

之后,我添加了我的自定义UIView并创建了一些约束:

    func createAttachView() {
        attach = MessageChatAttachmentsView(frame: CGRectZero)
        let newView = findKeyboardView()
        newView!.addSubview(attach!)
        newView!.addConstraint(NSLayoutConstraint(item: accessoryView, attribute: .Bottom, …
Run Code Online (Sandbox Code Playgroud)

uiview uikeyboard ios uiview-hierarchy swift

6
推荐指数
1
解决办法
2177
查看次数

标签 统计

ios ×1

swift ×1

uikeyboard ×1

uiview ×1

uiview-hierarchy ×1