2

我想知道是否还有其他人遇到过这个问题或者可以提供帮助?

本质上,我在我的应用程序的屏幕上使用自定义键盘。

屏幕上有 x4 个文本字段。加载时,第一响应者是第一个文本字段。这仍然在 ios6 中完美运行。当数据被添加到第一个文本字段时,问题就出现了——它应该触发 UIControlEventEditingChanged(如在 ios5 中)但它没有。在 ios5 中,这会触发对输入数据的检查,并在适当时将第一响应者更改为下一个文本字段。代码是:

[self.field addTarget:self
                action:@selector(textFieldDidUpdate:)
      forControlEvents:UIControlEventEditingChanged];

为了隔离问题,我使用标准键盘在文本字段上测试了上面的代码,它在 ios6 中工作,这让我认为它必须与引入 ios6 问题的自定义键盘有关 - 也许我应该是在 ios5 中做,但已为我自动管理。

值得注意的是,我仍然能够触及所有四个领域——所以这与其他人一直在问的问题不同。

我使用此代码隐藏键盘:

id keyboardImpl = [objc_getClass("UIKeyboardImpl") sharedInstance];
[keyboardImpl setAlpha:0.0f];

每个字段都会重新加载键盘。

我也有一个警告,我不知道如何解决:

id keyboardImpl = [objc_getClass("UIKeyboardImpl") sharedInstance];

隐式声明类型为 'id (const char *)' 的库函数 'objc_getClass'

找不到实例方法“-sharedInstance”(返回类型默认为“id”)

稍微分开一点,我听说有时这种类型的键盘会被苹果拒绝,也有兴趣听听是否有人有这方面的经验?

谢谢 :)

4

2 回答 2

1

好的,所以我刚刚开始工作,这是 myCustomKeyboard 方法的一个示例。我希望这个答案对你有用

- (IBAction)button0Pressed {
self.textField.text = [self.textField.text stringByAppendingString:@"0"];
[self.textField sendActionsForControlEvents:UIControlEventEditingChanged];
[self playSound];
}

主要的补充是

[self.textField sendActionsForControlEvents:UIControlEventEditingChanged];

然后在我的另一堂课上我有这个

[[doubleCheckAlertView textFieldAtIndex:0] addTarget:self action:@selector(testMethod) forControlEvents:UIControlEventEditingChanged];

-(void) testMethod {
//Do something
}
于 2012-11-26T11:35:24.543 回答
0

在最终解决了 iOS6 的这些自定义键盘问题之后,iOS7 现在显示了我创建的所有自定义键盘的背景。背景是标准键盘的形状。有没有其他人在 iOS7 中使用自定义键盘遇到过这个问题?或者知道如何解决这个问题?

于 2013-10-09T10:39:25.350 回答