我很难找到如何为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!)
}
如果您有更好的方法或知道如何解决问题,请告诉我们!源代码也会挽救我的生命!
答案 0 :(得分:0)
看起来你正在尝试手动布局,如果是这样,我认为你可以先定义一些常量,如
然后定义按钮之间的间隙和行之间的间隙(假设它们应该相同)
然后您可以使用键盘宽度计算每个按钮框架,在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)
但我建议使用带自动布局的笔尖,它确实非常快速和方便。
希望它有所帮助。