在UIAlertView替代UITextField?

我想要一个用户的快速input。 我知道我可以把一个UITextField放在UIAlertView中,但是这是一个“黑客”。 有一个官方的/另一种方式来做到这一点?

令人惊讶的是,这种典型场景没有控制权。

谢谢

更新:尝试EGOTextFieldAlertView,但这里的结果: 在这里输入图像说明

和代码:

EGOTextFieldAlertView *alert = [[EGOTextFieldAlertView alloc] initWithTitle:@"Enter the group name" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; [alert addTextFieldWithLabel:@"Name"]; [alert show]; [alert release]; 

如果你愿意要求iOS 5,那么它不再是黑客。 UIAlertView现在有一个alertViewStyle属性,当它被设置为UIAlertViewStylePlainTextInput ,可以通过-[UIAlertView textFieldAtIndex:]来获取警报中的单个文本字段。

如果你仍然需要4.3或更早的版本,那么不,没有官方的方法来做到这一点,它真的是一个很大的“黑客”,这与称为SPI。

查看EGOTextFieldAlertView 。

如果你正在寻找一种替代方式,那么你可以创build自定义UIView这看起来像警报视图,并添加为子视图,使animation像警报视图。

我有完全相同的问题,并已修复它,似乎在iOS 4.3和5.0的工作。 看来还有其他一些类进一步下移了offsetY值的计算。 而不是更新所有非UIControl类的offsetY我改变它只更新它的UILabel类。

这是我在layoutSubviews中的EGOTextFieldAlertView.m中的修复

改变这一行: if(![view isKindOfClass:[UIControl class]]) {
到: if([view isKindOfClass:[UILabel class]]) {