【问题标题】:UITextField will not accept input from the keyboard for IOS6UITextField 将不接受来自 IOS6 的键盘输入
【发布时间】:2012-10-16 13:45:21
【问题描述】:

我已将范围缩小到仅 IOS6 设备。

原问题:

我到处搜索并尝试了所有方法,但我根本无法弄清楚!

我有一个UITextField。当它被选中时,键盘向上滑动并且光标开始在文本字段上闪烁。当我点击键盘上的按钮时,一切正常,键响应并且光标停止闪烁。唯一的问题是文本没有放入文本字​​段!但是,它确实接受来自表情符号键盘的输入。任何帮助将不胜感激!

UITextField 是这样创建的:

UITextField *userInput = [[UITextField alloc] initWithFrame:CGRectMake(10, yPos, controlWidth, 26)];
yPos += 32;
[userInput setText:[prompt defaultValue]];
[userInput setPlaceholder:[prompt helpText]];
[userInput setBorderStyle:UITextBorderStyleRoundedRect];
[userInput setClearButtonMode:UITextFieldViewModeWhileEditing];
[userInput setFont:[UIFont fontWithName:@"Helvetica" size:18]];
[userInput setAdjustsFontSizeToFitWidth:YES];
[userInput setMinimumFontSize:10];
[userInput setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[userInput setDelegate:self];
[self.scrollView addSubview:userInput];
[self.promptControls addObject:userInput];
[userInput release];

这是一个 for 循环,所以UITextFields 的数量取决于循环被调用的次数。

这些是我使用的委托方法:

- (void)textFieldDidBeginEditing:(UITextField *)aTextField
{
    self.activeField = aTextField;
}

- (void)textFieldDidEndEditing:(UITextField *)aTextField
{
    self.activeField = nil;
}

- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
    [aTextField resignFirstResponder];
    return YES;
}

activeField 是视图控制器上的一个属性,仅用于确定哪个字段当前处于活动状态

我相信这就是所有相关代码

【问题讨论】:

  • 光标不应停止闪烁。如果是这样,您的程序会以某种方式停止(如果它没有彻底崩溃,它可能会陷入无限循环)。
  • 当你输入文本时它会停止闪烁,然后在你停止时恢复
  • 尝试注释掉initWithFrame:setDelegate 之间的每一行。行为是否改变?如果您还注释掉委托行怎么办?无论如何,您发布的代码似乎都不是罪魁祸首。这是否同时发生在设备和模拟器中?
  • 尝试增加文本字段的宽度和高度,或减小字体大小。
  • 光标不动。我试着评论你所说的,行为是完全一样的。显然这只发生在 iPad 上,但在 iPhone 上它可以工作

标签: iphone ios ipad uitextfield


【解决方案1】:

确保在启动时正确设置窗口

你正在打电话

[window setRootViewController:someViewController];

如果您不这样做,现在在 iOS6 中会出现错误...

[window makeKeyAndVisible];

这不是错误(要省略),但会将东西扔到奇怪的地方,似乎导致 UITextViewUITextField 无法正常工作。

如...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

self.viewController = [[[MyViewController alloc] initWithNibName:nil bundle:nil] autorelease];

self.navigationController = [[[UINavigationController alloc] initWithRootViewController:self.viewController] autorelease];

[window setRootViewController:navigationController];

[window makeKeyAndVisible];

}

【讨论】:

  • 你拯救了我的一天 :-) 谢谢!
【解决方案2】:

我不确定,但这可能是文本颜色的简单问题。尝试设置文字颜色;

[userInput setTextColor:[UIColor blackColor]];

希望对你有帮助。

【讨论】:

  • 感谢您的回答,但不幸的是这不是问题:(
【解决方案3】:

尝试评论[userInput setDelegate:self];

【讨论】:

    【解决方案4】:

    这可能是因为窗口文本字段不是关键窗口。 只有键窗口可以接受用户输入。 所以,试着制作 [textfield.window makeKeyAndVisible];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多