UIAlertview 中的 UITextView 在 iOS 4.x 中不起作用
Posted
技术标签:
【中文标题】UIAlertview 中的 UITextView 在 iOS 4.x 中不起作用【英文标题】:UITextView in UIAlertview not working in iOS 4.x 【发布时间】:2012-03-08 03:32:49 【问题描述】:在我的医疗应用程序中,我有一个新功能,允许用户将 PDF 和其他资源下载到 Documents 文件夹以供离线查看。该应用程序支持 ios 4.1+ 和 iOS 5。用户在警报视图中输入下载文件的名称。对于 iOS 5,在警报中放置文本字段现在很容易。对于 iOS 4.x 中类似的外观和感觉,此代码通常运行良好:
alertNameEntryOld = [[UIAlertView alloc] init];
[alertNameEntryOld setDelegate:self];
[alertNameEntryOld setTitle:@"Enter new file name:"];
[alertNameEntryOld setMessage:@" "];
[alertNameEntryOld addButtonWithTitle:@"Cancel"];
[alertNameEntryOld addButtonWithTitle:@"Continue"];
//Check current device orientation.
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
//Place text field position appropriate to device position.
if (interfaceOrientation == UIInterfaceOrientationPortrait)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 30.0, 245.0, 25.0)];
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 30.0, 245.0, 25.0)];
[alertTextFieldOld setBackgroundColor:[UIColor whiteColor]];
//Auto-capitalize first letter with shift key enabled.
[alertTextFieldOld setAutocapitalizationType:UITextAutocapitalizationTypeSentences];
[alertNameEntryOld addSubview:alertTextFieldOld];
[alertNameEntryOld show];
[alertTextFieldOld release];
我的挫败感源于此代码在 iPhone 上的 iOS 4.1、4.2 和 4.3 以及 iPad 上的 iOS 4.1 上运行良好。但是,如果在装有 iOS 4.2 或 4.3 的 iPad 上运行它,相同的代码会创建一个警报视图,而文本字段只是丢失了。虽然我的应用程序适用于 iPhone,但我当然不希望 iPad 用户在运行它时遇到此错误。似乎iOS软件中可能存在错误。任何关于修复或替代的想法将不胜感激。提前致谢。
【问题讨论】:
【参考方案1】:试试这样:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter new file name:" message:@" " delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:@"Cancel", nil];
UITextView *mTextView = [[UITextView alloc] init];
[mTextView setFrame:CGRectMake(20.0, 30.0, 245.0, 25.0)];
[alert addSubview:mTextView];
[mTextView release];
[alert show];
[alert release];
【讨论】:
感谢您的帮助。您的解决方案确实可以根据需要显示文本输入字段。但是,光标随后会移出视野。我继续寻找使用 UITextField 而不是 UITextView 的解决方案,最后找到了一个可行的解决方案,使用更多代码:iphonedevelopment.blogspot.com/2009/02/…以上是关于UIAlertview 中的 UITextView 在 iOS 4.x 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
将 UItextField 和 UITextView 添加到 UIAlertView
UITextView 类中未调用 UIAlertView 委托方法
在 UIAlertView(iOS、Xamarin)上添加 UITextView,而不使用任何第三方库