iOS:处理文本字段/视图交互和键盘移动的最稳定方式?

时间:2016-05-07 16:45:15

标签: ios swift uitextfield uitextview uitextfielddelegate

我的应用程序包含文本字段和文本视图,人们可以通过各种方式与它们进行交互。有些类型从输入字段切换到输入字段,某些类型切换到字段并点击“完成”,#34;等

有没有人发现他们特别喜欢处理字段/视图之间切换的方式,同时根据输入的数据更新内部数据模型?任何喜欢的技巧?

相关:如果有人从一个字段切换到另一个字段,每个字段的委托调用顺序(应该/开始/结束编辑)是什么,resignFirstResponder()如何进入它?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以为每个UITextFields和UITextViews设置唯一标记,以便为每个UITextField或UITextView相应地区分和存储数据。每当有人与UITextField交互时,可以使用以下委托方法

func textViewDidBeginEditing(textView: UITextView)
func textFieldDidBeginEditing(textView: UITextField)

每当我们开始编辑UITextField或UITextView时,都会调用上面两个委托函数。这些功能可用于相应地调整您的布局,以便您的UITextField或UITextView不会落后于键盘。但是,如果视图中有多个UITextFields和UITextViews,那么它就是'最好使用第三方库来完成这项任务。我在我的一个项目中使用了https://github.com/michaeltyson/TPKeyboardAvoiding

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 

使用上述两个函数,您可以跟踪对UITextField和UITextView内的文本所做的更改

func textViewDidEndEditing(textView: UITextView)
func textFieldDidEndEditing(textField: UITextField)

只要编辑在特定的UITextView或UITextField中结束,就会调用上述两个函数。这可以用于根据标记存储来自UITextField或UItextView的数据。

func textFieldShouldReturn(textField: UITextField) -> Bool 

单击返回键时调用此方法。您还可以使用此选项将根据标记等将此文本字段中键入的文本存储在数组中。