Ios Swift:SWReavealController可以';t滑动以关闭菜单“;仅使用“刷卡”打开;
这是使用SWRevealController的滑出菜单,运行良好,但可以滑动打开,但不能滑动关闭菜单 添加库后,我做了一些更改,但我确实知道问题出在哪里 这是主viewcontroller中的代码Ios Swift:SWReavealController可以';t滑动以关闭菜单“;仅使用“刷卡”打开;,ios,iphone,swift,uinavigationcontroller,swrevealviewcontroller,Ios,Iphone,Swift,Uinavigationcontroller,Swrevealviewcontroller,这是使用SWRevealController的滑出菜单,运行良好,但可以滑动打开,但不能滑动关闭菜单 添加库后,我做了一些更改,但我确实知道问题出在哪里 这是主viewcontroller中的代码 @IBOutlet weak var menuButton:UIBarButtonItem! override func viewDidLoad() { super.viewDidLoad() if self.revealViewController() != nil {
@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
}
}
当显示视图控制器前部位置不在
revealController:willMoveToPosition:
的代理方法实现中的左侧位置时,您似乎正在禁用平移手势识别器,同时禁用视图上的用户交互。因此,分隔缝视图控制器只能移动到单个位置。您可以更改该代码以允许您需要的其他位置
例如,如果您注释掉此代码
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
}
}
这将防止不必要地禁用平移手势
如果需要禁用显示视图控制器平移手势,我建议使用委托方法
RevealControllerPangTesture应该开始:
fromSWRevealViewControllerDelegate
似乎您不必要地禁用平移手势识别器。如果您通过删除代码或注释它来停止这样做,它是否解决了您的问题?我已经添加了我在回答中提到的代码。哇,它工作得很好,我浪费了几个小时试图修复它。非常感谢你。我很高兴能帮上忙。我还想指出,您可能在but_back()
函数中不必要地添加了额外的平移手势识别器。在viewdiload:
中添加一次就足够了。是的,我做了评论,它仍然可以正常工作。谢谢兄弟