iOS 8键盘扩展布局

时间:2014-10-24 06:41:28

标签: iphone swift layout keyboard

我很难找到如何为iOS 8创建自定义键盘扩展程序。我可以很好地完成功能,调整颜色确实不是问题,布局然而是主要问题。 我已经尝试了很多疯狂的方法来弄清楚最佳布局是什么,例如检查输入视图的宽度或容器应用程序视图的宽度(两者都不允许显然)然后确定它是什么设备,这样我就可以根据设备的屏幕尺寸和方向计算按键的大小,高度和位置的比率。

到目前为止,应用程序仅使用代码和0个nib文件或故事板进行键盘布局。如果有人可以帮助我,那将是非常棒的!

现在每个键都有一个功能,例如q键

//Q Key

    func addQKey()
    {
        var qKey = UIButton.buttonWithType(.System) as UIButton
        qKey.setTitle(NSLocalizedString("Q", comment: "Q Key"), forState: .Normal)
        qKey.sizeToFit()
        qKey.frame = CGRect(x: 5, y: 14, width: (view.bounds.size.width / 6), height: 20)
        qKey.titleLabel?.font = UIFont(name: "Avenir-Black", size: 20)
        //qKey.backgroundColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0)
        //qKey.backgroundColor = UIColor(white: 1, alpha: 1)
        qKey.setTitleColor(UIColor.whiteColor(), forState: .Normal)

        qKey.addTarget(self, action: "didTapButton:", forControlEvents: .TouchUpInside)

        self.view.addSubview(qKey)
    }

这会插入一个方法,然后插入文本

//TapButton Began

func didTapButton(sender : AnyObject)
{
    let button = sender as UIButton
    let title = button.titleForState(.Normal)
    var proxy = textDocumentProxy as UITextDocumentProxy

    proxy.insertText(title!)
}

如果您有更好的方法或知道如何解决问题,请告诉我们!源代码也会挽救我的生命!

1 个答案:

答案 0 :(得分:0)

看起来你正在尝试手动布局,如果是这样,我认为你可以先定义一些常量,如

定义TOP_MARGIN 5

定义BOTTOM_MARGIN 5

定义LEFT_MARGIN 5

定义RIGHT_MARGIN 5

然后定义按钮之间的间隙和行之间的间隙(假设它们应该相同)

然后您可以使用键盘宽度计算每个按钮框架,在UIInputViewController中,self.view.frame应该为您提供键盘框架。

例如,像Q

首先需要计算按钮宽度,因为我们通常希望按钮具有相同的宽度(否则),因此Q的按钮宽度将为

int widthForQ = self.frame.size.width - LEFT_MARGIN - RIGHT_MARGIN - 9 * BUTTON_GAP

高度相同的想法

int heightForQ = self.frame.size.height - TOP_MARGIN - BOTTOM_MARGIN - 3 * ROW_GAP

所以Q的框架是

CGRectMake(LEFT_MARGIN,TOP_MARGIN,widthForQ,heightForQ)

但我建议使用带自动布局的笔尖,它确实非常快速和方便。

希望它有所帮助。