我正在使用SJSegmentedViewController来使我的视图控制器分段。
我有一个名为PlaceReviewsVC
的视图控制器,我在其中添加了textView以供审阅。发表评论我发布Post
的UIBarButtonItem
酒吧按钮实例navigationItem.rightBarButtonItem
在我的placeDetailSegmentController
,这是SJSegmentedViewController
的实例。
现在问题是当我点击发布按钮时,我无法解除键盘问题。
我试过以下代码在分段视图控制器中添加post按钮。
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)
}
如何将键盘从一个视图控制器关闭到另一个视图控制器?
您应该更改您的代码以解除键盘,如下所示:
@objc func btnPostTapped() {
AppDelegate.shared.window?.endEditing(true)
}
我们的应用程序基础是window
,因此当您在窗口上执行任何事件时,它将影响整个应用程序。我希望这能解决你的问题。
从任何地方隐藏键盘
UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil)
要么
从导航层次结构获取所需的viewcontroller实例并将键盘重新签名为:
requiredViewController.textField.resignFirstResponder()
要么
requiredViewController.view.endEditing(true)