首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >斯威夫特- UITapGestureRecognizer UIPageViewController

斯威夫特- UITapGestureRecognizer UIPageViewController
EN

Stack Overflow用户
提问于 2015-04-21 23:50:39
回答 1查看 1.2K关注 0票数 0

好吧,我创建了一个页面浏览滑块应用程序。一切都很好,但是现在我希望能够使用UITapGestureRecognizer用一个点击隐藏/取消隐藏肚脐。

我已经能够在viewDidLoad上隐藏导航条,但是我不知道在哪里调用singleTapped函数,或者如何实现UITapGestureRecognizer。

如何使用UITapGestureRecognizer隐藏/取消隐藏UIPageViewController导航条?

斯威夫特/监督办新产品

我的代码

代码语言:javascript
复制
class ViewController: UIViewController, UIPageViewControllerDataSource {

var pageViewController: UIPageViewController!

private var allPages = [Page]()
var pages = NSMutableOrderedSet()

override func viewDidLoad() {
    super.viewDidLoad()

    ###Hide NavBar
    self.navigationController?.navigationBarHidden = true

    self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController
    self.pageViewController.dataSource = self

    var startVC = self.viewControllerAtIndex(0) as ContentViewController
    var viewControllers = NSArray(object: startVC)
    self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: .Forward, animated: true, completion: nil)

    self.pageViewController.view.frame = CGRectMake(0, 30, self.view.frame.width, self.view.frame.size.height)

    self.addChildViewController(self.pageViewController)
    self.view.addSubview(self.pageViewController.view)
    self.pageViewController.didMoveToParentViewController(self)
}

###Function to Hide/Unhide Navbar
func singleTapped(recognizer: UITapGestureRecognizer) {

    if (self.navigationController?.navigationBarHidden == false) {
        ###hide the Navigation Bar
        self.navigationController?.setNavigationBarHidden(true, animated: true)
    }
        ###if Navigation Bar is already hidden
    else if (self.navigationController?.navigationBarHidden == true)
    {
        ###Show the Navigation Bar
        self.navigationController?.setNavigationBarHidden(false, animated: true)
    }

}

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
    var vc = viewController as! ContentViewController
    var index = vc.pageIndex as Int

    if (index == 0 || index == NSNotFound) {
        return nil
    }

    index--
    return self.viewControllerAtIndex(index)
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {

    var vc = viewController as! ContentViewController
    var index = vc.pageIndex as Int

    if (index == NSNotFound) {
        return nil
    }

    index++

    if (index == self.pages.count) {
        return nil
    }

    return self.viewControllerAtIndex(index)

}

func viewControllerAtIndex(index: Int) -> ContentViewController
{
    if ((self.pages.count == 0) || (index >= self.pages.count)) {
        return ContentViewController()
    }

    var vc: ContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController

    ###Store image in imageFile
    var image = (pages.objectAtIndex(index) as! Page).image        
    vc.imageFile = image
    vc.pageIndex = index

    return vc

}

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int
{
    return self.pages.count
}

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int
{
    return 0
}

} 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 23:57:00

使用UITapGestureRecognizer:

在viewDidLoad函数中添加

代码语言:javascript
复制
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action:"singleTapped:"))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29785204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档