2016-06-30 7 views
5

मेरे पास मेरे ऐप में दशमलव पैड सेटअप है, लेकिन मैं इस कीबोर्ड को कैसे खारिज कर सकता हूं? मैं एक पूर्ण या वापसी कुंजी कैसे प्राप्त करूं? मैंने UIReturnKeyType.Done की कोशिश की है लेकिन यह कुछ भी नहीं दिखाया।स्विफ्ट में दशमलव पैड पर रिटर्न कुंजी कैसे जोड़ें?

Something like this

कुछ ऐसा

+0

एक iPad आप जोड़ सकते पर

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() } } 

डिफ़ॉल्ट क्रियाओं का उपयोग उपयोग के उदाहरण यह कुंजीपटल के शीर्ष पर बार पर, लेकिन दूसरे पर डिवाइस आपके विकल्प सीमित हैं। मैं उस बटन को जोड़ूंगा जो इसके शीर्ष पर दिखाई देता है या एक कस्टम कीबोर्ड – 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

मैं यूआई के लिए एक एक्सटेंशन बनाया टेक्स्टफिल्ड और अब मैं चाहता हूं कि सभी कीबोर्ड पर "होन बार" हो।

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 के लिए यह तय करने के लिए लचीलापन देता है, पर एक कस्टम कार्रवाई करने के लिए या रद्द करें टैप किया गया है। कार्रवाई हो गया

// 
// MyViewController.swift 
// 

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

उपयोग के उदाहरण एक कस्टम का उपयोग कर:

// 
// MyViewController.swift 
// 

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

func doneButtonTappedForMyNumericTextField() { 
    print("Done"); 
    myNumericTextField.resignFirstResponder() 
} 
संबंधित मुद्दे