2011-06-13 99 views
1

我是iPhone编程的新手,当我使用此代码启用/禁用按钮时,什么都不会发生。我通过一个IBOutlet连接了我的按钮,我知道当我在viewDidLoad中禁用它时它可以工作。我只是不知道为什么这种方法不起作用。启用/禁用按钮

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

什么是'multiplicationIsPressed'?也许它总是假的。 – 2011-06-13 04:38:09

+0

你是否设置了变量multiplicationIsPressed?您是否已将IB的按钮的IBOuttlet连接到按钮? – 2011-06-13 04:38:29

+0

一旦你禁用了按钮,IBAction将不再工作,因为你已经禁用了按钮。尝试使用seleced状态为您的目的。看到我更新的答案。 – 2011-06-13 05:33:18

回答

1

请检查您的IBOutlet中已经正确连接了此按钮与否,然后

使用这段代码

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

就是这样。你不需要有任何布尔标志。它像切换一样工作。

+0

如果禁用按钮,则不会调用multiplicationButtonPressed方法。我不认为它会起作用。 – 2011-06-13 05:20:01

+0

@Chandan shetty SP对不起我的错误。谢谢(你的)信息。 – 2011-06-13 05:31:00

+0

感谢那些正是问题的人。现在它变得更有意义。非常感谢十亿。 – 2011-06-13 05:46:11

0

请检查您的IBOutlet中已经正确连接了此按钮与否,然后

使用此代码

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

有任意数量的原因,这可能失败。没有更多的上下文,我们只能猜测。

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

谢谢。对不起,遗漏了更多信息。我将multiplicationButtonPressed设置为BOOL值。我必须IBActions,如果我按乘法按钮它禁用按钮并将其设置为YES。如果我按=按钮将其设置为YES,再次启用它。但是,当我按下=按钮时,它永远不会再启用它。然而,禁用部分工作正常。 – 2011-06-13 05:12:26