大佬教程收集整理的这篇文章主要介绍了用键盘上的按钮显示UIView,比如Skype,Viber messengers(Swift,iOS),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经问过这样的问题here了,但是这个问题的建议解决方案并不那么优雅,因为当我将滚动视图拖到顶部时,我希望我的附件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 }
func createAttachView() { attach = messageChatAttachmentsView(frame: CGRectZero) let newView = findKeyboardView() newView!.addSubview(attach!) newView!.addConsTraint(NSLayoutConsTraint(item: accessoryView,attribute: .bottom,relatedBy: .Equal,toItem: attach!,attribute: .Top,multiplier: 1.0,constant: 0.0)) attach!.addConsTraint(NSLayoutConsTraint(item: attach!,attribute: .Height,toItem: nil,attribute: .NotAnAttribute,constant: 260)) attach!.addConsTraint(NSLayoutConsTraint(item: attach!,attribute: .Width,constant: 320)) }
这会在输入附件视图和键盘上方创建自定义UIView,当我向上滚动时它会移动.但是当我想按下按钮时,我按下键盘上的一个键.
那么如何将此视图移动到UIInputSetHostView中的视图层次结构顶部?
class messageChaTinputAccessoryView : UIToolbar { var textView:UITextView! //textView for entering text var sendButton: UIButton! //send message var attachButton: UIButton! // attach button "+" var attachTextView:UITextView! --> this one override init(frame: CGRect) { super.init(frame: framE) ..... ..... attachTextView = UITextView(frame: CGRectZero) attachTextView.alpha = 0.0 self.addSubview(attachTextView) .... }
所以在我的主视图控制器中,我创建了函数,为这个新创建的attachTextView重新初始化inputView,如下所示:
func attach(sender: UIButton) { if attachMenuIsShown { accessoryView.attachTextView.inputView = accessoryView.textView.inputView accessoryView.attachTextView.reloadInputViews() attachMenuIsShown = false } else { accessoryView.attachTextView.becomeFirstResponder() accessoryView.attachTextView.inputView = messageChatAttachmentsView(frame: CGRectZero) accessoryView.attachTextView.reloadInputViews() attachMenuIsShown = true } }
因此,当我按下附加按钮时,我的attachTextView成为第一响应者,而不是重新初始化此textView的输入视图.我在输入附件视图下方获得了附件视图.当我再次按下附加按钮时,我使用默认的inputView为我的主textView重新初始化inputView,这是键盘视图.
以上是大佬教程为你收集整理的用键盘上的按钮显示UIView,比如Skype,Viber messengers(Swift,iOS)全部内容,希望文章能够帮你解决用键盘上的按钮显示UIView,比如Skype,Viber messengers(Swift,iOS)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。