有没有办法以编程方式在 iOS Swift 中关闭"force"键盘?



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时将此属性用作目标。

另一种方法是使用协议和委托。

最新更新