将自定义键盘用于两个不同的视图

时间:2012-03-28 15:04:15

标签: objective-c ios

我创建了一个UIViewController的子类,xib有一个我自己构建的自定义键盘。我使用自定义键盘的原因是我需要一个小数点的键,它需要比原生键盘短,并且它只需要有数字。

模态视图不起作用,因为我希望它只能在中途出现,就像原生键盘一样。

我能够将其作为同一xib中的另一个视图,但我不确定如何从单独的xib中调用它2个不同的视图将使用我的键盘 - 所以我想要只创建一次而不是将它作为另一个视图添加到两个xib。

以下是我将另一个视图添加到同一xib时代码的外观。 (它有效)。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if (!calcVisible) {
        [calculatorView setFrame:CGRectMake(0, 416, 320, 200)];
        [self.view addSubview:calculatorView];

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.3f];
        [calculatorView setFrame:CGRectMake(0, 216, 320, 200)];
        [UIView commitAnimations];

        calcVisible = YES;
    }

但我如何从单独的calculatorView

初始化xib

1 个答案:

答案 0 :(得分:1)

  

模态视图不起作用,因为我只希望它出现   中途,就像原生键盘一样。

将文本字段的inputView属性设置为要用作键盘的视图。在这种情况下,我猜是calculatorView,所以你想要添加视图控制器的-viewDidLoad中的某个位置:

textField.intputView = calculatorView;

当文本字段成为第一响应者时,它将显示该视图而不是标准键盘。您不必担心自己呈现视图。

  

但是我如何从单独的xib初始化calculatorView?

这也很简单。如果尚未添加插座,请添加到视图控制器:

@property(strong, nonatomic) IBOutlet UIView* calculatorView;

(您自然希望创建访问器,可能使用@synthesize。)创建一个名为“Calculator.xib”的.xib,其中包含您要使用的视图。选择.xib中的文件所有者代理图标,并将其类设置为视图控制器的类。然后将.xib中的视图连接到文件所有者中的calculatorView插座。在视图控制器的代码中,加载.xib文件:

[[NSBundle mainBundle] loadNibNamed:@"Calculator" owner:self options:0];

之后,您的calculatorView属性应指向您的视图实例。