【问题标题】:UITextField resign first responder by using pan gesture recognizer for SWRevealViewControllerUITextField 通过使用 SWRevealViewController 的平移手势识别器来辞职第一响应者
【发布时间】:2016-10-01 01:55:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios swift uitextfield uipangesturerecognizer swrevealviewcontroller


    【解决方案1】:

    我已经在 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();
    }
    }
    

    希望对你有帮助!

    【讨论】:

    • 像魅力一样工作!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多