如何使用 iPhone 键盘上的“下一步”按钮浏览所有文本字段?
最后一个文本字段应关闭键盘。
我已经设置了 IB 按钮(下一步/完成),但现在我被卡住了。
我实现了 textFieldShouldReturn 操作,但现在 Next 和 Done 按钮关闭了键盘。
在 Cocoa for Mac OS X 中,您有下一个响应者链,您可以在其中询问文本字段接下来应该关注哪个控件。这就是使文本字段之间的制表符起作用的原因。但由于 iOS 设备没有键盘,只有触控,所以这个概念在向 Cocoa Touch 的过渡中没有幸存下来。
无论如何,这很容易做到,有两个假设:
UITextField
假设你可以覆盖 textFieldShouldReturn: 如下:
-(BOOL)textFieldShouldReturn:(UITextField*)textField { NSInteger nextTag = textField.tag + 1; // Try to find next responder UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; if (nextResponder) { // Found next responder, so set it. [nextResponder becomeFirstResponder]; } else { // Not found, so remove keyboard. [textField resignFirstResponder]; } return NO; // We do not want UITextField to insert line-breaks. }
添加更多代码,假设也可以忽略。
斯威夫特 4.0
func textFieldShouldReturn(_ textField: UITextField) -> Bool { let nextTag = textField.tag + 1 // Try to find next responder let nextResponder = textField.superview?.viewWithTag(nextTag) as UIResponder! if nextResponder != nil { // Found next responder, so set it nextResponder?.becomeFirstResponder() } else { // Not found, so remove keyboard textField.resignFirstResponder() } return false }
如果文本字段的超级视图将是 UITableViewCell 那么下一个响应者将是
let nextResponder = textField.superview?.superview?.superview?.viewWithTag(nextTag) as UIResponder!