marrioa
marrioa

Reputation: 1275

Swift : Disable FrontViewController when Rear is Displayed

I want to disable interaction with front view when left or right views are revealed. How to do this ?

All the sources are written in objective-C

for example this one

    - (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position
{
    if(position == FrontViewPositionLeft) {
        self.view.userInteractionEnabled = YES;
    } else {
        self.view.userInteractionEnabled = NO;
    }
}

- (void)revealController:(SWRevealViewController *)revealController didMoveToPosition:(FrontViewPosition)position
{
    if(position == FrontViewPositionLeft) {
        self.view.userInteractionEnabled = YES;
    } else {
        self.view.userInteractionEnabled = NO;
    }
}

Update

This is Front View Controller didn't work either

class Feed: UIViewController,SWRevealViewControllerDelegate {




@IBOutlet var tableView: UITableView!

@IBOutlet weak var menuButton:UIBarButtonItem!

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


    if self.revealViewController() != nil {
        menuButton.target = self.revealViewController()
        menuButton.action = "revealToggle:"
        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 = false
            }
            else
            {
                self.view.userInteractionEnabled = true
            }


        }

        fetchMessages()
    }
}

Upvotes: 2

Views: 1309

Answers (3)

marrioa
marrioa

Reputation: 1275

we made mistake first condition is true and the second is false

    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
    }
    else
    {
        self.view.userInteractionEnabled = false
    }

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

    }

Upvotes: 1

Anbu.Karthik
Anbu.Karthik

Reputation: 82759

use any one method , it is fine

Swift

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=False
 }
 else
 {
 self.view.userInteractionEnabled=true
 }

}

don't forget to add self.revealViewController().delegate = self in your view controller else , the delegate not called

Objective-c

 - (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position
{
if(position == FrontViewPositionLeft) {
    self.view.userInteractionEnabled = YES;
} else {
    self.view.userInteractionEnabled = NO;
}
}

don't forget to add self.revealViewController.delegate = self; in your view controller else , the delegate not called

update/customize

class Feed: UIViewController,SWRevealViewControllerDelegate {


@IBOutlet var tableView: UITableView!

@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())

}

  fetchMessages()
}

 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 = false
        }
        else
        {
            self.view.userInteractionEnabled = true
        }


    }

Upvotes: 4

Sankalap Yaduraj Singh
Sankalap Yaduraj Singh

Reputation: 1199

Try it.

func revealController(revealController: SWRevealViewController, didMoveToPosition position: FrontViewPosition) {

if revealController.frontViewPosition == FrontViewPosition.Left {
    self.view.userInteractionEnabled = true
}
else {
    self.view.userInteractionEnabled = false
}

}

Upvotes: 2

Related Questions