ios - 导航栏显示/隐藏

标签 ios iphone cocoa-touch uinavigationcontroller uinavigationbar

我有一个应用程序,其导航栏由 2 个栏按钮组成。我想在用户双击屏幕时隐藏和显示此导航栏。

最初,导航栏应该是隐藏的。当用户双击屏幕时,导航栏应该出现一个动画,就像在 iPhone 的照片库中看到的那样。

我该怎么做?我们总是很感激您的建议。

最佳答案

这不是几行代码就能解决的问题,但这是一种可能适合您的方法。

隐藏导航栏:

[[self navigationController] setNavigationBarHidden:YES animated:YES];

显示它:

[[self navigationController] setNavigationBarHidden:NO animated:YES];

此方法的文档是 available here .

要监听“双击”或双击,子类 UIView 并使该子类的实例成为您的 View Controller 的 view 属性。

在 View 子类中,覆盖它的 -touchesEnded:withEvent:方法并计算您在一段时间内获得了多少次触摸,通过测量两次连续点击之间的时间,可能使用 CACurrentMediaTime() .或测试 [touch tapCount] 的结果.

如果您点击两次,您的子类 View 会发出一个 NSNotification您的 View Controller 已注册监听。

当您的 View Controller 听到通知时,它会触发一个选择器,该选择器使用上述代码隐藏或显示导航栏,具体取决于导航栏的当前可见状态,通过读取导航栏的 isHidden 访问。属性(property)。

编辑

我关于处理点击事件的部分回答可能在 iOS 3.1 之前很有用。 UIGestureRecognizer如今,类可能是处理双击的更好方法。

编辑 2

Swift 隐藏导航栏的方式是:

navigationController?.setNavigationBarHidden(true, animated: true)

显示它:

navigationController?.setNavigationBarHidden(false, animated: true)

关于ios - 导航栏显示/隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926914/

相关文章:

javascript - notification.confirm 回调不触发 phonegap iOS

iphone - MFMailComposeViewController 的发送和取消按钮未出现

ios - 没有圆角的模态?

ios - UIButton 大小不变

ios - Swift,来自 URL 的图像 - 在 Ipad 模拟器上质量很好,但在 Iphone 4s 模拟器上质量很差

objective-c - 我应该在返回对象之前发送 retain 或 autorelease 吗?

objective-c - 为什么 Objective-C block 在不将其复制到堆中的情况下仍然有效?

xcode - 如何编辑默认的 Xcode 模板?

iphone - NSString 和 NSDictionary valueForKey - 无?

ios - 将相同的框架与另一个框架和主应用程序一起使用时出现错误