我在使用小數位的現有應用程序中有自定義鍵盤。我正在嘗試執行英制測量。自定義鍵盤中的PickerView
所以我刪除了鍵盤的小數點,並添加了一個選擇器視圖,我希望所有可能的分數在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中使用此鍵盤的另一個視圖調用這些協議函數。
- 我想選擇器與
[Fractions]
- 我想了解如何存儲揀貨機被顯示成,我從調用它的視圖 - 控制變量的字符串值填充。
我對初始化沒有很好的理解,這是我想象的問題所在。對不起,代碼轉儲。
我並不是說這是你唯一的問題,但我發現,如果文本不適合在它裏面挑選器控制器將不顯示。嘗試使用「32」並讓它顯示。從那裏建立起來。 – Mozahler