我想创建附件视图,放置在输入附件视图下,通过键盘,如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)