UITextField 通过使用 SWRevealViewController 的平移手势识别器来退出第一响应者

UITextField resign first responder by using pan gesture recognizer for SWRevealViewController

我使用 GitHub 中的 SWRevealViewController 创建了侧边栏菜单。在我的正面视图中,我有一个文本字段,默认情况下它会成为第一响应者,提示键盘弹出。现在,当我使用平移手势打开侧边栏菜单时,我需要文本字段退出第一响应者,反之亦然,以便在通过平移手势关闭侧边栏菜单时再次成为第一响应者。

这可以通过使用平移方向来完成吗?

用于在我的项目中实现 SWRevealViewController 功能的代码:

  if self.revealViewController() != nil {
        myButton.addTarget(self.revealViewController(), action: #selector(SWRevealViewController.rightRevealToggle(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }

我已经在 with/on SWRevealViewController 工作了一段时间,然后回答你的问题你可以将你的 frontViewController 添加为 SWRevealViewControllerDelegate 然后实现这个功能

func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition)

frontViewController向左或向前移动时,您会收到通知

这是代码

在你的 frontViewController 中你需要添加

class FrontViewController: UIViewController, SWRevealViewControllerDelegate
 {
@IBOutlet weak var textField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
self.revealViewController().delegate = self;
 }

然后

func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition) {
if(position == FrontViewPosition.Left)
{
    self.textField.becomeFirstResponder();

}else
{
    self.textField.resignFirstResponder();
}
}

希望对您有所帮助!