【问题标题】:Dismiss Keyboard from Another View Controller从另一个视图控制器中关闭键盘
【发布时间】:2019-03-25 10:29:35
【问题描述】:

我正在使用SJSegmentedViewController 使我的视图控制器分段。

我有一个名为 PlaceReviewsVC 的视图控制器,我在其中添加了 textView 以供查看。为了发表这篇评论,我在我的placeDetailSegmentController 中添加了UIBarButtonItemUIBarButtonItem 栏按钮实例placeDetailSegmentController,它们是SJSegmentedViewController 的实例。

现在的问题是当我点击发布按钮时,我无法关闭键盘。

我尝试了以下代码在分段视图控制器中添加发布按钮。

let headerVC = PlaceImagesVC.viewController()

let reviewVC = PlaceReviewsVC.viewController()
reviewVC.delegate = self
reviewVC.title = "Reviews"

let placeDetailSegmentController = SJSegmentedViewController()     
placeDetailSegmentController.delegate = self
placeDetailSegmentController.title = "Pedal Studio"
placeDetailSegmentController.headerViewController = headerVC
placeDetailSegmentController.segmentControllers = [reviewVC]
placeDetailSegmentController.headerViewHeight = 280
placeDetailSegmentController.selectedSegmentViewHeight = 2.0
placeDetailSegmentController.selectedSegmentViewColor = .white

let button = UIButton(type: .custom)
button.setImage(#imageLiteral(resourceName: "icon_back").withRenderingMode(.alwaysTemplate), for: .normal)
button.tintColor = .white
button.addTarget(self, action:#selector(backButtonTapped), for:.touchUpInside)
button.frame = CGRect(x: 0, y: 0, width: 20, height: 20)
button.contentMode = .scaleAspectFit
button.imageEdgeInsets = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
let leftButton = UIBarButtonItem(customView: button)

placeDetailSegmentController.navigationItem.leftBarButtonItem = leftButton            

let btnPost = UIButton(type: .custom)
btnPost.setTitle("POST", for: .normal)
btnPost.addTarget(self, action:#selector(btnPostTapped), for:.touchUpInside)
btnPost.titleLabel?.setFont(Typography.getFont(.PoppinsMedium, size: 12.0), .white)
btnPost.setTitleColor(.menuColor, for: .normal)
btnPost.setTitleColor(.darkGray, for: .highlighted)
btnPost.contentMode = .scaleAspectFit
let rightButton = UIBarButtonItem(customView: btnPost)

placeDetailSegmentController.navigationItem.rightBarButtonItem = rightButton

self.navigationController?.pushViewController(placeDetailSegmentController, animated: true)

btnPostTapped 方法中,我编写了以下代码来关闭键盘。但是没用。

@objc func btnPostTapped() {
    self.view.endEditing(true)
}

如何将键盘从一个视图控制器关闭到另一个视图控制器?

【问题讨论】:

    标签: ios swift uikeyboard


    【解决方案1】:

    您应该更改代码以关闭键盘,如下所示:

    @objc func btnPostTapped() {
        AppDelegate.shared.window?.endEditing(true)
    }
    

    我们的应用程序的基础是window,因此当您在窗口上执行任何事件时,它将影响整个应用程序。我希望这能解决您的问题。

    【讨论】:

      【解决方案2】:

      从任何地方隐藏键盘

      UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil)
      

      从导航层次结构中获取所需的 viewcontroller 实例并将键盘注册为:

      requiredViewController.textField.resignFirstResponder()
      

      requiredViewController.view.endEditing(true)
      

      【讨论】:

        猜你喜欢
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-20
        • 2014-05-07
        相关资源
        最近更新 更多