启用/禁用按钮

时间:2011-06-13 04:35:51

标签: iphone objective-c

我是iPhone编程的新手,当我使用此代码启用/禁用按钮时,没有任何反应。我通过IBOutlet连接了我的按钮,我知道当我在viewDidLoad中禁用它时,它可以工作。我只是想弄清楚为什么这种方法不起作用。

- (void) multiplicationButtonPressed {
    if (multiplicationIsPressed) {
        multiplicationButton.enabled = NO; 
    } else {
        multiplicationButton.enabled = YES; 
    }
}

3 个答案:

答案 0 :(得分:1)

请检查您的IBOutlet是否已正确连接此按钮,然后

使用这段代码

- (IBAction) multiplicationButtonPressed 
 {
    multiplicationButton.selected = !multiplicationButton.selected;
 }

就是这样。您不需要任何布尔标志。它就像切换一样。

答案 1 :(得分:0)

请检查您的IBOutlet是否已正确连接此按钮,然后

使用此代码

 - (IBAction) multiplicationButtonPressed 
 {
     if (multiplicationIsPressed) {
          multiplicationButton.userInteractionEnabled = NO; 
     } else {
          multiplicationButton.userInteractionEnabled = YES; 
     }
 }

答案 2 :(得分:0)

这可能是失败的原因有很多。没有更多的背景,我们只能猜测。

  • 如果在加载视图之前调用了multiplicationButtonPressed,则尚未创建该按钮。
  • 你说multiplicationButton在IB中被作为IBOutlet连接起来,但你可能错了。它实际上是连接的吗?
  • 如果multiplicationButtonPressed是按钮或其他控件的动作,它可能实际上并没有连接到应该连接的任何内容。这很可能是因为您将其声明为(void)而不是(IBAction),因此除非.h文件中的声明与IB不匹配,否则甚至不会看到它。
  • 如果(顾名思义)multiplicationButtonPressedmultiplicationButton本身的操作,当按钮当前未启用时将永远不会调用它,因为enabled设置为NO的按钮永远不会回应接触。
  • 或者同样的问题可能存在于视图层次结构的更高位置:userInteractionEnabled设置为NO的视图的子视图也不能响应触摸。
  • 或者您的布局可能已经搞砸了,并且无论什么按钮应该触发此事件实际上都不在其所有父视图的范围内。如果所述父视图没有剪切到边界,您仍然可以看到该按钮但不与其交互。