UIAlertView与UITextField和长消息

时间:2011-11-28 21:31:15

标签: iphone objective-c uitextfield uialertview

我正在使用此代码在我的UIAlertView中实现UITextField:

UIAlertView *receivedAlert = [[UIAlertView alloc] initWithTitle:message message:[NSString stringWithFormat:@"%@\n\n", [itemNameRows objectAtIndex:currentItem]] delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Submit", nil];

receivedField = [[UITextField alloc] initWithFrame:CGRectMake(16,70,252,25)];
receivedField.keyboardType = UIKeyboardTypeNumberPad;
receivedField.textAlignment = UITextAlignmentCenter;
receivedField.borderStyle = UITextBorderStyleRoundedRect;
receivedField.keyboardAppearance = UIKeyboardAppearanceAlert;

[receivedAlert addSubview:receivedField];
[receivedAlert show];
[receivedAlert release];

当我的消息超过2行时,会出现问题。警报视图正确调整大小,但文本字段不会向下移动以容纳更长的行。有什么想法吗?

如果必须的话,我可以通过缩短消息字符串来解决问题。

1 个答案:

答案 0 :(得分:2)

您不应该将子视图添加到UIAlertView。 Apple的文档明确禁止它(“此类的视图层次结构是私有的,不得修改。”),除了可能让你被拒绝之外,还可能打破未来的操作系统更新(这种情况曾经发生在iOS 3.1周围) )。

iOS 5添加了警报视图样式,以便您可以安全地使用警报视图中的文本字段。除了UIAlertViewStyleDefault之外,还有UIAlertViewStyleSecureTextInputUIAlertViewStylePlainTextInputUIAlertViewStyleLoginAndPasswordInput

创建警报视图并将alertViewStyle属性设置为适当的值。然后,您可以使用-textFieldAtIndex:获取文本字段。安全和纯文本样式在索引0处具有单个文本字段,默认情况下没有文本字段,并且登录名和密码在索引0(登录)和1(密码)处具有两个文本字段。

有关详细信息,请参阅UIAlertView Class Reference