【问题标题】:Xcode how to hide buttonsXcode如何隐藏按钮
【发布时间】:2012-02-07 07:54:53
【问题描述】:

我想创建一个手势,这样当用户双击屏幕时,所有按钮都会消失,直到再次双击它......

已经搜索过hi和low的答案,但我想我需要更加努力......请帮助哈哈

如果您能具体说明 .h 和 .m 中的内容,将不胜感激...

再次抱歉这个愚蠢的问题......

【问题讨论】:

  • 我认为 Dan Lewis 想问如何在 Xcode 上为 UIButton 设置“隐藏”值,而不是在 Objective-C 中。所以,这个问题不应该结束。很有用。

标签: xcode gesture tap


【解决方案1】:

你试过button.hidden = YES;吗?

【讨论】:

  • 嗨贾斯汀,我将如何实现这个?
  • @Dan 基本上,您会将 Mats 答案与我的答案结合起来,以完成您在 OP 中概述的内容。 buttons 在我的示例中将是您要隐藏的两个按钮之一,它将进入 Mats doubleTap 方法的主体。如果我的回答没有意义或如果您不知道button 应该代表什么或如何访问它,那么您应该从较小的编程练习开始——也许是一本关于iOS 的介绍性书籍发展。
  • 嗨贾斯汀,我觉得让我感到困惑的是他的方法开始无效(我会把这个放在哪里?)我是一个初学者,我知道,但你们比一些文献更容易理解在编程指南中,疯狂的是我能够实现更高级的代码,有时最简单的也是最难的......请
  • @Dan 方法定义在@implementation 块中。这是非常基本的 objc - 一本教你语言的书会对你有所帮助。如果不知道这些东西,你就无法编写 objc 程序。祝你好运。
  • 嗨,伙计...我明白..认为我遇到错误(仍然会得到书哈哈)但我所误解的是为按钮方法编写的代码..理解实现..你能为我写下该方法所需的代码吗?我会买书承诺
【解决方案2】:

如果您打算让按钮进出动画,那么您可以找到[button setAlpha:0][button setAlpha:1] 更有用,请原谅粗俗的例子:

- methodTheDoubleTapGuestureCalls
{
  if (button.alpha == 0)
     [UIView animateWithDuration:0.5 animations:^{
        [button.alpha setAlpha:1];
        }
  }
}

如果您在使用手势时遇到问题,那么在 iOS 5 中,您可以将手势识别器拖到 Interface Builder 中的视图上,设置您感兴趣的手势,然后将其链接到选择器。

【讨论】:

  • 嗨,格雷格...感谢您的回复,我已将手势拖到视图控制器中,但是当您说将其链接到选择器时,您是什么意思?我在屏幕上有两个按钮,当我双击时我想隐藏它们……我在这 3 个月里学到了很多东西,我一直在做这件事,以前从未上过论坛,我可以处理得更远更复杂的事情......承诺
  • 嗨,Dan,如果您在 Interface Builder 中右键单击手势识别器,则会弹出一个视图,其中包含“选择器”和旁边的空心圆圈。单击空心圆圈并将线拖动到“文件所有者”(可能)。这应该触发方法选项列表。如果您在 .h 中正确设置了显示/隐藏方法(它可能需要是 - (IBAction),那么它应该显示并且您可以选择它。现在每次检测到手势时都应该调用该方法。
  • 嗨格雷格...不要恨我,我放入 .h 文件的确切方法是什么?一年后我赚了几百万,我会来找你....
  • - (IBAction)gestureDetected: (id) sender;
  • 那么你当然需要在你的 .m 中使用与我上面的原始示例类似的相同方法。
【解决方案3】:

了解如何使用 NSTimmer 或 sleep() 函数来创建双击之间的延迟。

【讨论】:

    【解决方案4】:

    试试UIGestureRecognizer 类。
    此实现将允许您识别不同的预定义用户交互。

    UITapGestureRecognizer 是您需要的子类。

    在您的控制器中,您可以执行以下操作:

    // Do this in your viewDidLoad
    // Instance variable
    recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap)];
    [recognizer setMinimumNumberOfTouches:2];
    [recognizer setMaximumNumberOfTouches:2];
    

    并为按钮添加一个方法:

    - (void) doubleTap {
        //Hide/unhide buttons
    }
    

    对于按钮应该首先将它们添加为插座(带有关键字 IBOutlet 的实例变量),然后您应该将它们添加到您的视图中。 确保将它们链接起来。见here

    当你链接它们时,你可以使用下面的语句来隐藏/取消隐藏它们。

    第一个选项:

    buttonOne.hidden = !buttonOne.hidden
    buttonTwo.hidden = !buttonTwo.hidden
    

    第二个选项:

    //Add a instance variable hideButtons of type BOOL. I prefer this, your always sure the hidden value for each button has the same value.
    
    hideButtons = !hideButtons
    buttonOne.hidden = hideButtons
    buttonTwo.hidden = hideButtons
    

    在您的 viewDidLoad 中,您应该明确地将 hideButtons 设置为您的初始值。虽然布尔值为 false 时不需要,但为了清楚起见,我总是这样做。

    希望这对您有所帮助。

    【讨论】:

    • 嗨,谢谢您的回答,就方法而言,需要写什么?我有两个想要消失的按钮(我知道这是一个非常简单的问题,所以我表示歉意)
    猜你喜欢
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多