将 UItextField 和 UITextView 添加到 UIAlertView
Posted
技术标签:
【中文标题】将 UItextField 和 UITextView 添加到 UIAlertView【英文标题】:Adding UItextField and UITextView to an UIAlertView 【发布时间】:2015-01-29 21:32:06 【问题描述】:我有这段代码用于显示带有两个需要的额外对象的警报视图:
- (void)leaveCommentButtonPressed
UIAlertView *leaveCommentAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Leave comment", nil)
message:@""
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Done", nil];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 33)];
[textField setBackgroundColor:[UIColor lightGrayColor]];
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 33, 100, 67)];
[textView setBackgroundColor:[UIColor darkGrayColor]];
[view addSubview:textField];
[view addSubview:textView];
CGFloat system_version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (system_version < 7.0) //For Backward compatibility
[leaveCommentAlert addSubview:view];
else
[leaveCommentAlert setValue:view forKey:@"accessoryView"];
[leaveCommentAlert show];
但我的问题是我无法计算 alertView 的宽度来设置我的文本视图和文本字段的宽度。
也许还有其他一些答案如何实现文本字段和文本视图。但我的想法是让UIView
具有适当的大小。
【问题讨论】:
Unable to add UITextField to UIAlertView on ios7...works in iOS 6的可能重复 UIAlertView keyboard overlay textview issue的可能重复 【参考方案1】:Hic sunt dracones
子类化注释
UIAlertView 类旨在按原样使用,而不是 支持子类化。此类的视图层次结构是私有的,不得修改。
您应该使用警报视图替换。网络上有很多,例如:CXAlertView、DLAlertView 或 SDAlertView
【讨论】:
【参考方案2】:如果您只是想使用UIAlertView
的默认实现,Apple Docs 还指出:
警报可以包含一个或两个文本字段,其中一个可以是安全的文本输入字段。通过将其 alertViewStyle 属性设置为 UIAlertViewStyle 常量指定的样式之一,您可以在创建警报后将文本字段添加到警报中。警报视图样式可以指定无文本字段(默认样式)、一个纯文本字段、一个安全文本字段(在键入每个字符时显示一个项目符号)或两个文本字段(一个纯文本和一个安全)以适应登录标识符和密码
见Alert Views
但是,正如在另一篇文章中提到的,UIAlertView
已被弃用并由UIAlertController
取代。幸运的是,它带有addTextFieldWithConfigurationHandler:
,可以让你做你想做的事。
【讨论】:
UIAlertController
不支持添加文本视图,只支持文本字段。
啊,是的,谢谢@rmaddy,我有一个坏习惯,把这两个读成同一个东西。以上是关于将 UItextField 和 UITextView 添加到 UIAlertView的主要内容,如果未能解决你的问题,请参考以下文章
将 UItextField 和 UITextView 添加到 UIAlertView
UIButton & UITextField 将阻止 UITableViewCell 被滑动删除