小数点を使用する既存のアプリケーションにカスタムキーボードがあります。私は帝国の測定を実装しようとしています。カスタムキーボードのPickerビュー
私はキーボードから小数点を削除し、1/32 - > 31/32の間に可能な分数をすべて取りたいピッカービューを追加しました。 これは今のようです。ピッカー(「完了」ボタンの上)を除いて、すべての機能がUITextfieldで正常に機能します。
ピッカーに[Strings]をロードできません。以下は、キーボード用に持っているプロトコルとカスタムクラスです。
protocol imperialDelegate: class {
func iKeyWasTapped(_ character: String)
func iKeyDone()
func iBackspace()
func iKeyCalc()
func iFraction()
}
class imperial: UIView, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var picker: UIPickerView!
var pickerData: [String] = [String]()
let fractions = ["1/32","1/16","3/32","1/8","5/32","3/16","7/32","1/4","9/32",
"5/16","11/32","3/8","13/32","7/16", "15/32","1/2","17/32",
"9/16", "19/32","5/8","21/32","11/16", "23/32","6/8","25/32",
"13/16","27/32", "7/8","29/32","15/16","31/32"]
// MARK:- keyboard initialization
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.picker.delegate = self
self.picker.dataSource = self
initializeSubviews()
picker.reloadAllComponents()
picker.reloadInputViews()
}
override init(frame: CGRect) {
super.init(frame: frame)
initializeSubviews()
}
func initializeSubviews() {
let xibFileName = "imperialKeyboard"
let view = Bundle.main.loadNibNamed(xibFileName, owner: self, options: nil)?[0] as! UIView
self.addSubview(view)
view.frame = self.bounds
}
// MARK:- Button actions from .xib file
@IBAction func keyTapped(_ sender: UIButton) {
self.delegate?.iKeyWasTapped(sender.titleLabel!.text!)
}
@IBAction func backspace(_ sender: UIButton) {
self.delegate?.iBackspace()
}
@IBAction func Done(_ sender: UIButton) {
self.delegate?.iKeyDone()
}
@IBAction func keyCalc(_ sender: UIButton) {
self.delegate?.iKeyCalc()
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return fractions.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return fractions[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.delegate?.iFraction()
}
}
私はUITextFieldsにこのキーボードを使用して別のビューからこれらのプロトコル機能を呼び出します。
- 私はピッカーが、私はピッカーが、私はからそれを呼び出していますのViewControllerに変数に表示される文字列値を格納する方法を理解したいと思います
[Fractions]
- に移入します。
私は問題があると想像している初期化を十分に理解していません。コードをダンプして申し訳ありません。
私はこれが唯一の問題であるとは言わないよ、私はテキストは、その中に収まらない場合は、ピッカーコントローラが表示されないことがわかりました。 "32"を使用して表示してください。そこから築き上げてください。 – Mozahler