跨多个视图的自定义键盘

时间:2010-11-01 21:50:45

标签: iphone uiviewcontroller uikeyboard

我有一个带有UITextField的UIViewController,当keyboardType设置为NumberPad时,它使用自定义'DONE'按钮。我使用过类似的代码 -

http://www.neoos.ch/news/46-development/54-uikeyboardtypenumberpad-and-the-missing-return-key

但是,我的问题是自定义键盘在应用程序的其他UI视图中仍然无处不在。如果我从另一个视图控制器调用键盘,我仍然会覆盖键盘上的“完成”按钮。我还有其他需要Unikustomized版本的UIKeyboard的视图。

由于

1 个答案:

答案 0 :(得分:1)

我从上面提到的完全相同的博客开始。我遇到了同样的问题,因为我的应用程序中有多种键盘类型。

我的解决方案包括以下更改:

1 - 使UIButton * doneButton成为Controller类的成员变量

2 - 在“viewDidLoad”方法中,我有以下代码段

self.doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
doneButton.frame = CGRectMake(0, 163, 106, 53);
doneButton.adjustsImageWhenHighlighted = NO;
[doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
[doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
[doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];

3 - 在“doneButton”IBAction中,我有以下代码片段,以确保从键盘视图中删除该按钮。

- (IBAction) doneButton:(id)sender {
    [self.view endEditing:YES];
    [doneButton removeFromSuperview];
}

添加按钮的逻辑与博客描述的逻辑没有什么不同,只要您按照该方向操作,就应该看到数字键盘上的按钮,然后在单击“完成”按钮时将其删除。