IPhone UITextField在点击时不显示编辑插入符或清除占位符文本

时间:2010-02-19 14:03:22

标签: iphone uitextfield

我在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上发生)

3 个答案:

答案 0 :(得分:3)

在Interface Builder中,您是否选中了“编辑开始时清除”框?选中此选项后,文本字段应在用户点击编辑后清除任何值,这是我认为您正在寻找的行为。

如果在代码中方便,也可以使用clearsOnBeginEditing以编程方式设置相同的属性。

我的猜测是你已经完成了这个并且它没有像你期望的那样表现。只需检查这是帮助您调试的第一步。

此外,这是否会在模拟器和测试设备上发生?

巴特

以下编辑...

这看起来很奇怪。除了在应用程序启动时呈现模态视图的基础知识之外,让我们除去所有内容,看看会发生什么。

我重新创建了最基本的应用程序(我知道)来测试在启动时呈现模态视图控制器并验证字段编辑是否正常。当您在新项目中执行相同/类似操作时会发生什么?

这是我正在做的事:
1)在Xcode中创建一个名为“ModalViewTest”的基于视图的新应用程序

2)使用名为ModalViewController

的xib创建一个新的UIViewController

3)在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的色调颜色更改为蓝色来解决它