【问题标题】:Use custom keyboard for two different views为两个不同的视图使用自定义键盘
【发布时间】:2012-03-28 15:04:15
【问题描述】:

我创建了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;
    }

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

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

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

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

    textField.intputView = calculatorView;
    

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

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

    这也很容易。如果你还没有添加一个出口到你的视图控制器:

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

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

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

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

    【讨论】:

    • 感谢您的帮助 Caleb,我只是有点困惑。我是将计算器视图和 xib 连接到正在使用它的 viewController 还是calculatorView.h?因为我需要从两个不同的视图使用它——所以如果我从一个视图连接它,我不能从另一个视图使用它?
    猜你喜欢
    • 2016-10-16
    • 2019-12-29
    • 2019-08-08
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2014-07-03
    相关资源
    最近更新 更多