【问题标题】:iOS8 Button setEnabled doesn't workiOS8按钮setEnabled不起作用
【发布时间】:2014-09-14 04:23:17
【问题描述】:

我刚刚下载了 iOS8 GM Seed,发现我的 UIButtons,在购买应用内购买时设置为启用,不起作用。

- (void)viewDidLoad

我有

[mainToneBtn setEnabled:YES];

在 iOS8 之前,这会将按钮更新为可点击,但现在不行。我没有做任何与此相关的更改,在调试中,上面的代码被命中。没有代码将其设置回 setEnabled:NO。

有什么想法吗?

谢谢。

【问题讨论】:

  • 您是否在主线程上启用它们?
  • @Acey 是的,这个问题是 ios8 特有的。
  • viewDidLoad 中,是mainToneBtn nil?
  • @vacawama nope,但您在下面的答案有效。谢谢!

标签: ios uibutton ios8


【解决方案1】:

我无法重现您的问题。无论出于何种原因,ViewDidLoad 现在似乎在ViewController 生命周期中为时过早,您无法启用按钮。我建议稍后在ViewDidLayoutSubviews 中尝试启用它们。

【讨论】:

  • 这对我有用,谢谢!但我还是不明白,为什么 ios8 的行为与 ios7 及之前的不同。
  • 实际上将 updateAllInAppPurchases 放入 ViewDidLayoutSubviews 对我来说是个问题,因为我在这个 viewController 中有其他视图。显示任何其他视图都会导致加载 ViewDidLayoutSubviews。我只想在加载时激活一次 updateAllInAppPurchases。
  • 将布尔属性或实例变量添加到名为inAppPurchasesUpdated 的类中。在ViewDidLoad 中将其设置为NO。在调用你的更新方法之前检查确保它是ViewDidLayoutSubviews中的NO,然后在你的更新方法中将它设置为YES
【解决方案2】:

由于某种原因,这行得通,

[self performSelector:@selector(updateAllInAppPurchases) withObject:nil afterDelay:0.001];

按钮代码在 updateAllInAppPurchases 中

但我不知道为什么我必须在 ios8 中这样做。谁能给我一个很好的解释,我会接受答案,谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多