如何浏览文本字段(Next/Done按钮)

如何使用iPhone键盘上的“下一步”按钮浏览所有文本字段?

最后一个文本字段应该关闭键盘。

我已经设置了IB按钮(下一个/完成),但现在我被卡住了。

我实现了textFieldShouldRe转折点操作,但是现在下一个按钮关闭键盘。


翻阅古今
浏览 645回答 3
3回答

慕哥9229398

在Cocoa for MacOSX中,您有下一个响应链,您可以在其中询问文本字段接下来应该关注什么控件。这就是使文本字段之间的选项卡工作的原因。但是由于iOS设备没有键盘,只有触摸,这一概念在过渡到CocoaTouch之后并没有存活下来。无论如何,只要有两个假设,这是很容易做到的:所有“可表”UITextFieldS在同一个父视图上。它们的“制表符顺序”由Tag属性定义。假设您可以重写textFieldShouldRe转折点:如下所示:-(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.}添加更多的代码,这些假设也可以被忽略。SWIFT 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}如果文本字段的SuperView将是UITableViewCell,那么下一个响应程序将是let nextResponder = textField.superview?.superview?.superview?.viewWithTag(nextTag) as UIResponder!

临摹微笑

这是我对这个问题的解决办法。为了解决这个问题(而且我讨厌依赖标记来做事情),我决定向UITextField对象添加一个自定义属性。换句话说,我在UITextField上创建了一个类别,如下所示:UITextField+Extended.h@interface&nbsp;UITextField&nbsp;(Extended)@property(retain,&nbsp;nonatomic)UITextField*&nbsp;nextTextField;@endUITextField+Extended.m#import&nbsp;"UITextField+Extended.h"#import&nbsp;<objc/runtime.h>static&nbsp;char&nbsp;defaultHashKey;@implementation&nbsp;UITextField&nbsp;(Extended)-&nbsp;(UITextField*)&nbsp; nextTextField&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;objc_getAssociatedObject(self,&nbsp;&defaultHashKey);&nbsp;}-&nbsp;(void)&nbsp;setNextTextField:(UITextField&nbsp;*)nextTextField{ &nbsp;&nbsp;&nbsp;&nbsp;objc_setAssociatedObject(self,&nbsp;&defaultHashKey,&nbsp;nextTextField,&nbsp;OBJC_ASSOCIATION_RETAIN_NONATOMIC);&nbsp;}@end现在,我是如何使用它的:UITextField&nbsp;*textField1&nbsp;=&nbsp;...init&nbsp;your&nbsp;textfieldUITextField&nbsp;*textField2&nbsp;=&nbsp;...init&nbsp;your&nbsp;textfieldUITextField&nbsp;*textField3&nbsp;=&nbsp;... init&nbsp;your&nbsp;textfield textField1.nextTextField&nbsp;=&nbsp;textField2;textField2.nextTextField&nbsp;=&nbsp;textField3;textField3.nextTextField&nbsp;=&nbsp;nil;并实现textFieldShouldRe转折点方法:-&nbsp;(BOOL)textFieldShouldReturn:(UITextField&nbsp;*)theTextField&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;UITextField&nbsp;*next&nbsp;=&nbsp;theTextField.nextTextField; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(next)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[next&nbsp;becomeFirstResponder]; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[theTextField&nbsp;resignFirstResponder]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;NO;&nbsp;}我现在有了一个UITextField的链接列表,每个人都知道下一个是谁。希望能帮上忙。
打开App,查看更多内容
随时随地看视频慕课网APP