Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone textFieldDidBeginEditing和textFieldShouldBeginEditing的确切区别是什么_Iphone_Objective C_Ios - Fatal编程技术网

Iphone textFieldDidBeginEditing和textFieldShouldBeginEditing的确切区别是什么

Iphone textFieldDidBeginEditing和textFieldShouldBeginEditing的确切区别是什么,iphone,objective-c,ios,Iphone,Objective C,Ios,textFieldDidBeginEditing和textFieldShouldBeginEditing的确切区别是什么。我想知道我们在哪种情况下使用它们(我知道当我们在textfield中输入任何东西时会调用它们。我想知道当我们在程序中同时使用这两种东西时调用它们的确切时间)一个“shouldbeagin”命令允许您对返回值说“不”,以禁止该操作 “didbeagin”表示它刚刚开始发生,您需要在该时间点采取任何需要执行的操作。AtextField应该开始编辑方法请求代理的权限,允许在用户点击

textFieldDidBeginEditing和textFieldShouldBeginEditing的确切区别是什么。我想知道我们在哪种情况下使用它们(我知道当我们在textfield中输入任何东西时会调用它们。我想知道当我们在程序中同时使用这两种东西时调用它们的确切时间)

一个“shouldbeagin”命令允许您对返回值说“不”,以禁止该操作


“didbeagin”表示它刚刚开始发生,您需要在该时间点采取任何需要执行的操作。

A
textField应该开始编辑
方法请求代理的权限,允许在用户点击文本字段时编辑该文本字段


另一方面,当textField开始编辑内容时(即在
textFieldShouldBeginEditing
之后,如果允许的话),将调用
TextFieldDiBeginediting

示例:您想创建一个不可编辑的文本字段,因此返回否:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    return NO;
}
关于textFieldDidBeginEditing:

讨论 此方法通知委托指定的文本字段刚刚成为第一个响应者。您可以使用此方法更新代理的状态信息。例如,可以使用此方法显示在编辑时应可见的覆盖视图

假设您有一个文本字段子类(并且您希望它是可编辑的),当用户编辑内容时,它会更改图形(例如:当用户键入时,它希望显示不同的焦点环),因此您可以使用它来执行这些操作。

如果您为“用户名”和“密码”设置了标记(从故事板)字段分别设置为0和1,然后尝试捕获func textFieldDidBeginEditing中的acitve字段,它不起作用

**func textFieldDidBeginEditing(_ textField: UITextField) -> Bool      
{
activeTextField=textField
返回真值
}**

**func textFieldShouldReturn(_ textField: UITextField) -> Bool      
{
让value=activeTextField.tag
开关值
{
案例0:
//对于用户名字段,应执行这种情况
案例1:
//对于密码字段,应执行此案例
}
}**

**func textFieldShouldReturn(_ textField: UITextField) -> Bool      
当调用@objc func textfielddebeginediting时,相同的函数正在工作并提供正确的结果,如果没有“objc”字,则不会拾取活动字段。我只是想知道,为什么会这样

**@objc func textFieldDidBeginEditing(_ textField: ) -> Bool     
{
activeTextField=textField
返回真值

}**

您需要哪些参考文档中对这两种方法的描述中没有的信息?@rmaddy当然是在那里,我说过我希望它们更清晰,它们之间的区别不,您没有说您希望“更清晰”。这两个词都不在你的问题中。如前所述,您的问题表明您根本没有阅读文档。如果您阅读了这两种方法的文档,您提出的问题将得到回答。如果您有一个更具体的问题在文档中没有明确说明,那么请提出一个更具体的问题。医生告诉你区别。医生会告诉你他们什么时候被叫来。