我在iPhone应用程序中有一个窗口,它以模态显示,允许用户在“第一次运行”时输入Web服务的设置。
文本字段设置了帮助文本,当您点击它们时,键盘会显示并允许您输入文本。
不幸的是,文本字段不会清除帮助文本,显示编辑插入符或显示正在输入的文本(如下面的屏幕截图所示)。
The wonderful issue... http://img522.imageshack.us/img522/2308/iphonenstextfieldissue.png
有什么建议吗?
窗口正在显示[self presentModalViewController:<controller_name> animated:YES];
,这可能是也可能不是此问题的原因 - 当我通过Interface Builder'test'应用程序运行UI时,文本框会像平常一样响应。
Clear when editing begins
。
提前致谢!
已编辑:更多信息 在Bart Gottschalk提供的信息后,我想我应该添加更多信息。首先,该应用程序是基于导航的应用程序。
其次,测试应用程序Bart推荐工作正常,因此将模态窗口和视图排除在等式之外。
第三,我在调用-(void)viewWillAppear...
委托方法时提出了模态视图 - 这可能是错误的地方......但是我不能100%确定我是否应该提出模态从App Delegate的didFinishLaunchingWithOptions
内查看...
(这在Simulator和iPhone 3.1.3上发生)
答案 0 :(得分:3)
在Interface Builder中,您是否选中了“编辑开始时清除”框?选中此选项后,文本字段应在用户点击编辑后清除任何值,这是我认为您正在寻找的行为。
如果在代码中方便,也可以使用clearsOnBeginEditing以编程方式设置相同的属性。
我的猜测是你已经完成了这个并且它没有像你期望的那样表现。只需检查这是帮助您调试的第一步。
此外,这是否会在模拟器和测试设备上发生?
巴特
以下编辑...
这看起来很奇怪。除了在应用程序启动时呈现模态视图的基础知识之外,让我们除去所有内容,看看会发生什么。
我重新创建了最基本的应用程序(我知道)来测试在启动时呈现模态视图控制器并验证字段编辑是否正常。当您在新项目中执行相同/类似操作时会发生什么?
这是我正在做的事:
1)在Xcode中创建一个名为“ModalViewTest”的基于视图的新应用程序
2)使用名为ModalViewController
的xib创建一个新的UIViewController3)在ModalViewController.h中添加方法
-(IBAction)closeModalView;
4)在ModalViewController.m中,将方法实现添加为
-(IBAction)closeModalView {
[self dismissModalViewControllerAnimated:YES];
}
5)在ModalViewController.xib中创建两个文本字段并将每个文本字段的占位符文本设置为abcd1234,并确认选中“编辑开始时清除”。
6)在ModalViewController.xib中添加一个“关闭”按钮并设置Touch Up Inside以激活“closeModalView”
7)在应用程序委托(ModalViewTestAppDelegate)中添加以下导入
#import "ModalViewController.h"
8)在应用程序委托(ModalViewTestAppDelegate)applicationDidFinishLaunching中,在包含[window makeKeyAndVisible]的行之后添加以下内容;
ModalViewController *modalViewController = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil];
[viewController presentModalViewController:modalViewController animated:YES];
9)保存所有内容
10)构建并运行这个新应用程序
文本字段的编辑是否按预期工作?如果是,那么您构建和呈现modalView的方式有何不同?如果不是,那么我们需要进一步挖掘以确定您的环境中发生了什么。
下面的第二个编辑...
在创建基于导航的应用程序时,我执行了以下操作以在应用程序启动时显示模态视图。这对您的测试应用程序和真实应用程序都有效吗?
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
ModalViewController *modalViewController = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil];
[navigationController presentModalViewController:modalViewController animated:YES];
}
答案 1 :(得分:1)
嗯,我只是弄清楚了,但老实说,如果没有巴特的坚持和非常棒的帮助,它会花费更长的时间,而且更令人沮丧。
事实证明问题是我在XIB文件中使用Window而不是View。这就是为什么在导航控制器中显示模态视图时它无法正确显示(即只有白屏)以及为什么UITextField
在显示RootViewController
的视图时无法正常显示。< / p>
因此,回顾一下 - 模式视图应该在XIB / NIB文件中有UIView
而不是UIWindow
。
感谢你的帮助巴特!
答案 2 :(得分:0)
我遇到了同样的问题,但仅限iOS7。我通过在Storyboard
中将textField的色调颜色更改为蓝色来解决它