Uitextfield 为什么';t使用ClickedButtonIndex解除Dismiss是否调用ClickedButtonIndex?

Uitextfield 为什么';t使用ClickedButtonIndex解除Dismiss是否调用ClickedButtonIndex?,uitextfield,uialertview,iphone,Uitextfield,Uialertview,Iphone,我正在使用这些代码让我的iPhone应用程序显示一个alertView,其中包含UITextField和匹配的CANCEL和OK按钮 用户可以输入文本,点击取消或确定。。。我看到了用户输入的文本。。。在ClickedButtonIndex方法中使用我的代码 除了一件事之外,它都可以工作:用户可能会在键盘上点击DONE而不是OK。 我正在使用dismissWithClickedButtonIndex来模拟“确定”单击。。。但是ClickedButtonIndex永远不会被调用 不应该使用Click

我正在使用这些代码让我的iPhone应用程序显示一个alertView,其中包含UITextField和匹配的CANCEL和OK按钮

用户可以输入文本,点击取消或确定。。。我看到了用户输入的文本。。。在ClickedButtonIndex方法中使用我的代码

除了一件事之外,它都可以工作:用户可能会在键盘上点击DONE而不是OK。 我正在使用dismissWithClickedButtonIndex来模拟“确定”单击。。。但是ClickedButtonIndex永远不会被调用

不应该使用ClickedButtonIndex来解除Dismiss,也可以调用ClickedButtonIndex吗


如果点击了“取消”、“确定”甚至“完成”,我会尝试让ClickedButtonIndex被调用。

我不确定是否完全理解您的问题,但以下是我的尝试:

首先,您需要从示例中删除if(buttonIndex!=[alertView cancelButtonIndex])。这适用于“确定”和“取消”按钮

要识别键盘的完成键,请使用
UITextField委托
-(BOOL)textField应返回:(UITextField*)textField
。在这里,您可以调用
[textField resignFirstResponder]
关闭键盘


另外,在
点击按钮索引中要做什么?你不能创建自己的方法并在需要时调用它吗?

因为这是一个老问题,你现在可能已经解决了,但我对此感到非常沮丧,无法从谷歌找到任何帮助,因此对于将来遇到此问题的任何人:当你调用
时,单击按钮索引将被解雇,调用的方法是
alertView:didDismissWithButtonIndex
,而不是
alertView:ClickedButtonIndex
。它的行为方式完全相同,我不明白为什么它们会是两个不同的方法来执行似乎是相同的操作,但事实就是如此。

ClickedButtonIndex
在用户实际单击按钮时被调用。单击按钮可能会或可能不会解除警报。标准的“确定/取消”按钮具有在单击时解除警报的效果。如果单击转换为Dismission,或者调用了
dismissWithClickedbuttonIndex
方法,则调用did
DismissWithButtonIndex

我对UIAlertView(块)类别也有同样的问题

我的解决方案:UIAlertView(块)->MYAlertView:UIAlertView

有时调用方法:
-(void)alertView:(UIAlertView*)alertView单击按钮索引:(NSInteger)按钮索引。有时它不打电话


所以。。。我试图从许多方面找到解决办法。然后我用完全相同的代码创建了UIAlertView的子类。我的问题解决了。事实上,它更难使用。但是不要再有这种侵入性的bug了。

谢谢你的这些行,奇怪的委托模式,DismissWithClicked按钮应该至少调用两个委托人方法,一个用于处理按钮点击,另一个用于处理关闭警报。令人困惑的、多余的、不必要的复杂性确实存在,但从委托模式的角度来看,这毫无意义。这意味着AlertViewClickedButtonIndex有时会被调用,但并不总是如委托方法所示。无论是否关闭警报,这都是另一个问题,现在这是didDismissWithButtonClicked的责任: