我正在使用此代码在我的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行时,会出现问题。警报视图正确调整大小,但文本字段不会向下移动以容纳更长的行。有什么想法吗?
如果必须的话,我可以通过缩短消息字符串来解决问题。
答案 0 :(得分:2)
您不应该将子视图添加到UIAlertView。 Apple的文档明确禁止它(“此类的视图层次结构是私有的,不得修改。”),除了可能让你被拒绝之外,还可能打破未来的操作系统更新(这种情况曾经发生在iOS 3.1周围) )。
iOS 5添加了警报视图样式,以便您可以安全地使用警报视图中的文本字段。除了UIAlertViewStyleDefault
之外,还有UIAlertViewStyleSecureTextInput
,UIAlertViewStylePlainTextInput
和UIAlertViewStyleLoginAndPasswordInput
。
创建警报视图并将alertViewStyle
属性设置为适当的值。然后,您可以使用-textFieldAtIndex:
获取文本字段。安全和纯文本样式在索引0处具有单个文本字段,默认情况下没有文本字段,并且登录名和密码在索引0(登录)和1(密码)处具有两个文本字段。
有关详细信息,请参阅UIAlertView Class Reference。