2016-06-30 6 views
5

私はアプリで小数点パッドの設定をしていますが、このキーボードを却下するにはどうすればいいですか?完了キーまたはリターンキーを取得するにはどうすればよいですか?私はUIReturnKeyType.Doneを試しましたが、何も表示されませんでした。スウィフトの小数点記号にリターンキーを追加する方法は?

Something like this

その

+0

:カスタム完了アクションを使用して、使用する

// // MyViewController.swift // @IBOutlet weak var myNumericTextField: UITextField! { didSet { myNumericTextField?.addDoneCancelToolbar() } } 

例それはキーボードの上部にあるバーに、それ以外のものにはあなたのオプションは限られています。私はそれの上に表示されるボタンを追加するか、カスタムキーボードを構築する – Sethmr

答えて

2
class ViewController: UIViewController { 

    let textField = UITextField(frame: CGRect(x: 0, y: 20, width: 200, height: 60)) 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     textField.borderStyle = .Line 
     textField.inputAccessoryView = accessoryView() 
     textField.inputAccessoryView?.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 44) 
     view.addSubview(textField) 
    } 

    func accessoryView() -> UIView { 

     let view = UIView() 
     view.backgroundColor = UIColor.redColor() 

     let doneButton = UIButton() 
     doneButton.frame = CGRect(x: self.view.frame.width - 80, y: 7, width: 60, height: 30) 
     doneButton.backgroundColor = UIColor.greenColor() 
     doneButton.setTitle("done", forState: .Normal) 
     doneButton.addTarget(self, action: #selector(ViewController.doneAction), forControlEvents: .TouchUpInside) 
     view.addSubview(doneButton) 

     return view 

    } 

    @objc func doneAction() { 
     textField.resignFirstResponder() 
    } 
} 

enter image description here

+0

私の質問にも参照していない... –

+0

ええ、私はこの質問を解決することはできません。私は別の方法を使用します。 – maquannene

+0

@AmitNivedanKalra代替ソリューションを提供している場合は、ここで何をしたのか説明しておくべきでしょう。 – penatheboss

7

この解決策のようなもの)は=私のために働いた

出典:https://gist.github.com/jplazcano87/8b5d3bc89c3578e45c3e

私はUIの拡張を作りましたTextFieldを使用して、私が望むすべてのキーボードに「Done Bar」を付けることができます。ここ

extension UITextField{ 

func addDoneButtonToKeyboard(myAction:Selector?){ 
    let doneToolbar: UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 300, height: 40)) 
    doneToolbar.barStyle = UIBarStyle.default 

    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil) 
    let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: myAction) 

    var items = [UIBarButtonItem]() 
    items.append(flexSpace) 
    items.append(done) 

    doneToolbar.items = items 
    doneToolbar.sizeToFit() 

    self.inputAccessoryView = doneToolbar 
} 
} 
MyViewController

class myViewController:UIViewController,UITextFieldDelegate{ 

    //MARK: - Outlets 
    @IBOutlet weak var myTextField: UITextField! 

    //MARK: - Life Cycle 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     myTextField.delegate = self 

    //You can specify your own selector to be send in "myAction" 
    myTextField.addDoneButtonToKeyboard(myAction: #selector(self.myTextField.resignFirstResponder)) 
    } 
} 

This is the result

+0

これは私が見てきた最も素敵なソリューションです! – user1700737

5

は、拡張機能を使用スウィフト3溶液です。理想的な、それは完了がタップされをキャンセルしたときにカスタムアクションを実行するかどうかを、各UITextFieldのために、決定するための柔軟性を提供しますと、あなたのアプリにはいくつかの数値UITextFieldオブジェクトを持っている場合。

enter image description here

// 
// UITextField+DoneCancelToolbar.swift 
// 

import UIKit 

extension UITextField { 
    func addDoneCancelToolbar(onDone: (target: Any, action: Selector)? = nil, onCancel: (target: Any, action: Selector)? = nil) {  
     let onCancel = onCancel ?? (target: self, action: #selector(cancelButtonTapped)) 
     let onDone = onDone ?? (target: self, action: #selector(doneButtonTapped)) 

     let toolbar: UIToolbar = UIToolbar() 
     toolbar.barStyle = .default 
     toolbar.items = [ 
      UIBarButtonItem(title: "Cancel", style: .plain, target: onCancel.target, action: onCancel.action), 
      UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil), 
      UIBarButtonItem(title: "Done", style: .done, target: onDone.target, action: onDone.action) 
     ] 
     toolbar.sizeToFit() 

     self.inputAccessoryView = toolbar 
    } 

    // Default actions: 
    func doneButtonTapped() { self.resignFirstResponder() } 
    func cancelButtonTapped() { self.resignFirstResponder() } 
} 

デフォルトアクションを使用しての使用例:あなたが追加することができますiPadの

// 
// MyViewController.swift 
// 

@IBOutlet weak var myNumericTextField: UITextField! { 
    didSet { 
     myNumericTextField?.addDoneCancelToolbar(onDone: (target: self, action: #selector(doneButtonTappedForMyNumericTextField))) 
    } 
} 

func doneButtonTappedForMyNumericTextField() { 
    print("Done"); 
    myNumericTextField.resignFirstResponder() 
} 
関連する問題