gpt4 book ai didi

ios - Swift:SWReavealController 无法滑动以关闭菜单 "only open with swipe"

转载 作者:行者123 更新时间:2023-11-28 06:57:27 25 4
gpt4 key购买 nike

这是使用 SWRevealController 的滑出菜单,它运行完美,但可以滑动打开但不能滑动关闭菜单

添加库后,我做了一些改动,但我确实知道问题出在哪里。

这是主视图 Controller 中的代码

  @IBOutlet weak var menuButton:UIBarButtonItem!

override func viewDidLoad() {
super.viewDidLoad()



if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
menuButton.action = "revealToggle:"
self.revealViewController().delegate = self
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

}


self.revealViewController().delegate = self
var swl = self.revealViewController()


if swl != nil
{
swl.panGestureRecognizer()
swl.tapGestureRecognizer()
}



}



@IBAction func but_back(sender: AnyObject) {

self.navigationController?.interactivePopGestureRecognizer!.delegate = self
self.navigationItem.leftBarButtonItem?.target=self.revealViewController()
self.navigationItem.leftBarButtonItem?.action=Selector("revealToggle:")
self.revealViewController().revealToggle(sender)

self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}


func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition)
{
if position == FrontViewPosition.Left // if it not statisfy try this --> if revealController.frontViewPosition == FrontViewPosition.Left
{
self.view.userInteractionEnabled = true
revealController.panGestureRecognizer().enabled=true
}
else
{
self.view.userInteractionEnabled = false
revealController.panGestureRecognizer().enabled=false
}

}

最佳答案

看起来你正在禁用平移手势识别器,同时禁用你 View 上的用户交互,当显示 View Controller 的前面位置不在你的 revealController:willMoveToPosition:< 的委托(delegate)方法实现中的左侧位置时 来自 SWRevealViewControllerDelegate。因此,reveal view controller 只能移动到一个位置。您可以更改该代码以允许您需要的其他职位。

例如,如果你注释掉这段代码

func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition)
{
if position == FrontViewPosition.Left // if it not statisfy try this --> if revealController.frontViewPosition == FrontViewPosition.Left
{
self.view.userInteractionEnabled = true
revealController.panGestureRecognizer().enabled=true
}
else
{
self.view.userInteractionEnabled = false
revealController.panGestureRecognizer().enabled=false
}
}

这应该可以防止不必要地禁用平移手势。

如果您需要禁用显示 View Controller 平移手势,我建议使用 SWRevealViewControllerDelegate 中的委托(delegate)方法 revealControllerPanGestureShouldBegin:

关于ios - Swift:SWReavealController 无法滑动以关闭菜单 "only open with swipe",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33025802/

25 4 0