在iPhone键盘上怎样才能使用“下一步”按钮通过文本框导航?
最后一个文本框用来关闭键盘。
我已经设置了IB(下一步/完成)按钮,就进行不下去了。
我执行了textFieldShouldReturn,但是下一步和完成按钮关闭了键盘。
谢谢大家帮助!
原问题:How to navigate through textfields (Next / Done Buttons)
在iPhone键盘上怎样才能使用“下一步”按钮通过文本框导航?
最后一个文本框用来关闭键盘。
我已经设置了IB(下一步/完成)按钮,就进行不下去了。
我执行了textFieldShouldReturn,但是下一步和完成按钮关闭了键盘。
谢谢大家帮助!
原问题:How to navigate through textfields (Next / Done Buttons)
2 回答1k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.5k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答1.1k 阅读
PeyloW
在Mac OS X 的Cocoa里,有下一个响应链,可以解决文本框下一个应该控制什么。这完成文本框之间的切换工作。但是由于iPhone没有键盘,只有触屏,所以这个概念没有顺利迁移到Cocoa Touch上。
无论如何,在下面两个前提下,这个还是容易解决的:
假设这个可以覆盖textFieldShouldReturn,像下面这样:
再加一些代码,这些假设也可以被忽略。
Answerbot
有一个更好的解决办法,我第一次看到觉得不错,好处如下:
创建一个UITextField子集合,这个子集合拥有名叫nextField 的IBOutlet 资源。这是头文件:
这是执行:
在视图控制器里, 你将创建 -textFieldShouldReturn: 委托方法:
在IB里。改变UITextFields使用SOTextField类。接着,还是在IB里,为每个SOTextFields设置委托至文件的所有者(放置委托函数textFieldShouldReturn的地方)。这个设计的优点在于,在任何的textField右键分配nextField出口到你所想让它成为下一个响应的SOTextField对象。

再者,还可以循环textField,使最后一个失去焦点时,第一个又成为焦点。
这个很容易被扩展到自动分配SOTextField的returnKeyType到UIReturnKeyNext,如果在有一个被分配的nextField——少一个手动配置的情况下。
Anth0
这是我的解决方案。
为了解决这一问题,我决定给UITextField对象添加一个自定义属性。换句话说我在UITextField创建一个这样的类:
UITextField+Extended.h
UITextField+Extended.m
现在,看看我怎么使用它:
执行textFieldShouldReturn函数:
现在我有了一种UITextField 链表,每一个都知道下一个是什么。
希望对你有所帮助。
jcrowson
这有一个非常简单的方法当按下“完成”键是驳回键盘。
在头文件里创建一个新的IBAction:
在执行文件里(.m file)里添加下述函数:
然后,当你链接IBAction至textfield,连接到Did End On Exit事件。
Marquee
I我喜欢 OO 解决办法, Anth0和Answerbot都已提到过。然而,我正在做一个快而小的POC,我不想用子类和类别弄乱东西。
另一个简单的解决办法是创建字段的NSArray,当按下“下一步”的时候查找下一个。这不是00方法,但是简单、快捷、易执行。另外,你可以一目了然地查看和修改顺序。
这是我写的代码:
KronoS
我已经完善了PeyloW的回答,以防你想实现上一个/下一个按钮的功能。
继承 UIView是这样的: