একটি সুইফট 3 সমাধান একটি এক্সটেনশন ব্যবহার করে। আইডিয়াল আপনাকে অনেকগুলি সাংখ্যিক আছে যদি UITextField
আপনার অ্যাপে বস্তু যেমন প্রত্যেকের জন্য সিদ্ধান্ত নিতে, নমনীয়তা দেয় UITextField
কিনা একটি কাস্টম কর্ম যখন সম্পাদন করতে সম্পন্ন বা বাতিল চাপড় মেরে করা হয়।
//
// 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() }
}
ডিফল্ট ক্রিয়া ব্যবহার করে ব্যবহারের উদাহরণ:
//
// 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()
}