【发布时间】:2017-07-25 23:34:03
【问题描述】:
我正在使用两个 numPad 键盘类型的文本字段。我为第一个文本字段添加了Next 按钮,为小键盘中的第二个文本字段添加了Done 按钮。使用以下代码。
import UIKit
class SecurityPinSettingsVC: UIViewController, UITextFieldDelegate
{
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
override func viewDidLoad()
{
super.viewDidLoad()
self.textField1.delegate = self
self.textField2.delegate = self
self.textField1.textAlignment = NSTextAlignment.center
self.textField2.textAlignment = NSTextAlignment.center
addNextButtonOnKeyboard()
addDoneButtonOnKeyboard()
}
func addNextButtonOnKeyboard()
{
let nextToolbar: UIToolbar = UIToolbar(frame: CGRect(x: 0,y: 0, width: 320, height: 50))
nextToolbar.barStyle = UIBarStyle.default
let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
let next: UIBarButtonItem = UIBarButtonItem(title: "Next", style: UIBarButtonItemStyle.done, target: self, action: #selector(ViewController.doneButtonAction))
var items = [UIBarButtonItem]()
items.append(flexSpace)
items.append(next)
nextToolbar.items = items
nextToolbar.sizeToFit()
self.textField1.inputAccessoryView = nextToolbar
}
func addDoneButtonOnKeyboard()
{
let doneToolbar: UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 320, height: 50))
doneToolbar.barStyle = UIBarStyle.default
let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
let ddone: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(ViewController.doneButtonAction))
var items = [UIBarButtonItem]()
items.append(flexSpace)
items.append(ddone)
doneToolbar.items = items
doneToolbar.sizeToFit()
self.textField2.inputAccessoryView = doneToolbar
}
func doneButtonAction()
{
//self.textField2.becomeFirstResponder()
//self.textField2.resignFirstResponder()
}
}
两个按钮都已成功添加。问题是,我无法为Next 按钮和Done 按钮创建单独的操作方法。它只接受两个按钮的doneButtonAction 方法,这是我在以前的视图控制器中创建和使用的。那么,我怎样才能在 doneButtonAction 方法中获取 textField id,以便知道单击了哪个按钮。因此,通过单击 Next 按钮,我想让 textField2 成为第一响应者,并通过单击 Done 按钮,我希望 textField2 辞去第一响应者的职务。
与普通的 textField 一样,textFieldShouldReturn 方法可以轻松完成这项工作,其中 textField 对象将作为参数传递给该函数。
这里,我们如何将 textField 对象传递给doneButtonAction 方法。
我正在使用 Xcode 8.2、Swift 3.0
提前致谢。
【问题讨论】:
-
试试这个库,真的很有用,不需要编写任何代码 -> pod 'IQKeyboardManager'
-
在您的情况下是否可以将
sender添加到doneButtonAction?
标签: ios swift keyboard textfield