使用苹果键盘中的返回按钮进行导航
Posted
技术标签:
【中文标题】使用苹果键盘中的返回按钮进行导航【英文标题】:Navigation using return button in apple keyboard 【发布时间】:2014-09-02 07:06:17 【问题描述】:我的视图控制器中有多个文本字段,如何使用 ios 键盘中的返回按钮从一个文本字段导航到另一个文本字段。
【问题讨论】:
你可以为此使用标签 @BHASKAR 你能告诉我怎么做,因为我是 ios 新手 在此处显示此链接是下一个上一个按钮***.com/questions/5591792/…的解决方案 【参考方案1】:使用UITextFieldDelegate
委托和textFieldShouldReturn:
方法。在里面你可以得到textfield
的标签,并根据这个信息直接指向另一个参数。
要让委托工作,您必须将发送者(文本字段)的委托属性设置为接收者(例如您的视图控制器)
myTextField.delegate = self;
或在故事板中执行 (here is some storyboard hints)。然后,您的视图控制器需要按如下方式指定此委托(在“h”文件中):
@interface MyViewController:UIViewController<UITextFieldDelegate>
@end
然后在“m”文件中
-(BOOL)textFieldShouldReturn:(UITextField*)textfield
if([textfield tag] == 1)
//pass focus to next textfield
[self.nextTextField becomeFirstResponder];
else
//remove focus from current textfield
[textfield resignFirstResponder];//
return YES;//YES if textfield should implement its default behaviour
【讨论】:
我在我的视图控制器中写这个方法没有任何改变 您是否在文本字段上设置了delegate
以指向您的视图控制器?
如果您想从文本字段导航到按钮,请再问一个问题,我该怎么做?
我还没有尝试过,但我想UIResponder
的becomeFirstResponder
的方式同样适用于UIButton
。【参考方案2】:
-(BOOL) textFieldShouldReturn: (UITextField *) textField
[textField resignFirstResponder];
if(textField == _your1stTextField)
[_your2ndTextField becomeFirstResponder];
return YES;
【讨论】:
【参考方案3】:试试这个...
为所有文本字段设置代表,然后..
- (BOOL)textFieldShouldReturn:(UITextField *)textField
if (textField == textField1)
[textField2 becomeFirstResponder];
else if (textField == textField2)
[textField3 becomeFirstResponder];
else if textField == textField3)
[textField4 becomeFirstResponder];
.
.
.
[textField resignFirstResponder];
return YES;
【讨论】:
【参考方案4】:我认为这个解决方案更具动态性,因为它适用于任意数量的文本字段,只要您的超级视图没有带有标签 == lastTextField.tag + 1 的视图
在 viewDidLoad 中:
- (void)viewDidLoad
[super viewDidLoad];
self.textField1.delegate = self;
self.textField2.delegate = self;
...
self.lastTextField.delegate = self;
self.textField1.tag = 1;
self.textField2.tag = 2;
...
self.lastTextField.tag = n;
然后实现textFieldDelegate:
-(BOOL) textFieldShouldReturn:(UITextField *)textField
NSInteger nextTag = textField.tag + 1;
UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
if (nextResponder)
[nextResponder becomeFirstResponder];
else
[textField resignFirstResponder];
return NO;
【讨论】:
如果我想使用键盘上的返回按钮从文本字段传递到按钮?? 如下图:developer.apple.com/library/ios/documentation/uikit/reference/…,UIButton继承自UIResponder。没试过,但如果你最后一个标记的视图是 UIButton,它肯定可以工作。【参考方案5】:你需要在.h声明
.m 设置
yourTextfieldRef1.delegate=self;
yourTextfieldRef2.delegate=self;
yourTextfieldRef3.delegate=self;
yourTextfieldRef4.delegate=self;
yourTextfieldRef5.delegate=self;
.
.
.
设置
yourTextFieldRef1.tag=1;
yourTextFieldRef2.tag=2;
yourTextFieldRef3.tag=3;
yourTextFieldRef4.tag=4;
yourTextFieldRef5.tag=5;
.
.
.
-(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 YES;
希望对您有所帮助...!
【讨论】:
以上是关于使用苹果键盘中的返回按钮进行导航的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Android中的导航控制器制作自定义后退按钮以返回某个目的地?