i有一个viewController
EditMessage,它具有两个UITextFields
(UITEXTVIEW(,它使用键盘,它们效果很好。这部分是基本标准的东西。显示键盘时,我为整个view
注册标签手势,因此,如果用户单击其他任何地方,我都会解散键盘:
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self,
action: #selector(dismissKeyboard)))
在divionkeyboard中,这一切都很好:
@objc func dismissKeyboard(sender: Any) {
self.view.endEditing(true)
}
但是,我有一个菜单按钮(缩略图映像(在同一EditMessage视图上以子视图控制器(UIViewController
(实现,该视图通过UIApplication.shared.keyWindow()
劫持了屏幕,以在屏幕底部显示覆盖层和菜单。使用> Brian Voong的 YouTube频道的模型/代码构建,以从底部复制菜单中的YouTube样式幻灯片。但是,键盘在路上。由于孩子是另一个视图控制器" Endediting" 不起作用(或者我是在引用错误的视图?(。
class ButtonPickerController : UIViewController,
UIGestureRecognizerDelegate, UINavigationControllerDelegate {
var maxSize = CGFloat(60)
let thumbnail: UIImageView = {
let thumbnail = UIImageView()
thumbnail.backgroundColor = UIColor.lightGray
return thumbnail
}()
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(self.buttonTapped(sender:)))
tap.delegate = self
view.addGestureRecognizer(tap)
//view.backgroundColor = .yellow
view.contentMode = .scaleAspectFit
thumbnail.frame = CGRect(x: 0, y: 0, width: self.maxSize, height: self.maxSize)
setupSubviews()
}
有人可以指向我的方向吗?这是我的第一个问题,希望我能正确地问。
我最终弄清楚了。感谢您的帮助。在我的子视图控制器中,我确实使用了按下按钮时使用以下语句:
@objc func buttonTapped(sender: UITapGestureRecognizer? = nil) {
self.parent!.view.endEditing(true)
}
首先,它不是将叠加层呈现为 UIViewController
的好方法。
但是,在调用 viewDidLoad
之前,将第二视图controller引用第一个。您使用Segue
S吗?因此,在prepare
中将是正确的位置。在第二个ViewController中,您为第一个属性创建一个属性,然后在创建UITapGestureRecognizer
时将此属性用作目标。
另一种方法是使用协议和委托。