代码之家  ›  专栏  ›  技术社区  ›  Ed Marty

UIAlertViewDelegate ClickedButtonIndex:有用吗?

  •  12
  • Ed Marty  · 技术社区  · 15 年前

    UIAlertViewDelegate 协议定义了两种方法, alertView:clickedButtonAtIndex: alertView:didDismissWithButtonIndex: ,在我看来,它们的用处是一样的。

    为什么会有 clickedButtonAtIndex didDismissButtonWithIndex 当他们做同一件事的时候?我意识到还有 willDismissButtonWithIndex 单击按钮索引 而不是 DidDismissButtonWithinIndex中的DidDismissButtonWithinIndex ?

    4 回复  |  直到 15 年前
        1
  •  19
  •   Ed Marty    15 年前

    我发现两者之间有一个更有用的区别:

    当显示 UIAlertView ,设备进入睡眠状态, alertView:didDismissWithButtonAtIndex: 调用,即使警报视图实际上没有被取消。一旦设备唤醒,它将再次显示。 alertView:clickedButtonAtIndex:

        2
  •  12
  •   Yannick Loriot    12 年前

    这个 alertView:clickedButtonAtIndex: 当用户单击警报视图上的按钮时调用 alertView:didDismissWithButtonIndex: 在从屏幕上取消警报视图后调用(看到了吗 UIAlertViewDelegate Protocol Reference .)

        3
  •  1
  •   futureelite7 Adam Rosenfield    12 年前

    如果警报视图因任何原因(包括被另一个UIAlertView覆盖、进入睡眠状态等)而消失, didDismissWithButtonAtIndex: 被称为。这意味着即使用户不点击任何东西也可以调用该方法。如果依赖于调用此委托回调以响应用户实际单击按钮,则这可能会导致意外行为。在这种情况下 clickedButtonAtIndex: 更有用。

        4
  •  1
  •   junjie Peter    11 年前

    我无法复制埃德的行为通过锁定我的设备与警报视图在iOS7上。

    然而,最重要的区别是 alertView:clickedButtonAtIndex: , alertView:didDismissWithButtonIndex: alertView:willDismissWithButtonIndex: clickedButtonAtIndex: 用户显式点击按钮 在警报视图上(因此“单击”)。

    UIAlertView dismissWithClickedButtonIndex:animated: .

    didDismissWithButtonIndex: willDismissWithButtonIndex: 更有意义。