Objective c 检测编辑何时在一个uitextfield上结束而在另一个uitextfield上开始

Objective c 检测编辑何时在一个uitextfield上结束而在另一个uitextfield上开始,objective-c,uitextfield,detect,Objective C,Uitextfield,Detect,我刚刚创建了两个函数,slideAuthViewUp和slideAuthViewDown,当您输入登录名或密码UITextfield时会调用它们。在横向模式下,查看整个身份验证表单非常有用 这些被称为如下: [passwordTextField addTarget:self action:@selector(slideAuthFormUp) forControlEvents:UIControlEventEditingDidBegin]; [passwordTextField addTarget:

我刚刚创建了两个函数,
slideAuthViewUp
slideAuthViewDown
,当您输入登录名或密码
UITextfield
时会调用它们。在横向模式下,查看整个身份验证表单非常有用

这些被称为如下:

[passwordTextField addTarget:self action:@selector(slideAuthFormUp) forControlEvents:UIControlEventEditingDidBegin];
[passwordTextField addTarget:self action:@selector(slideAuthFormDown) forControlEvents:UIControlEventEditingDidEnd];

[loginTextField addTarget:self action:@selector(slideAuthFormUp) forControlEvents:UIControlEventEditingDidBegin];
[loginTextField addTarget:self action:@selector(slideAuthFormDown) forControlEvents:UIControlEventEditingDidEnd];
现在,问题是当我单击密码文本字段时,登录文本字段调用slideAuthFromDown,然后密码文本字段调用slideAuthFormUp。所以身份验证表单在很短的时间内上下波动,这不是我想要的。我希望这张表格能在这么短的时间内保存


有人知道怎么做吗?

您需要在短时间延迟后执行向下滑动,如果在该时间内发生向上滑动,请取消计划的选择器。所以…有一个中间方法

- (void)delayedSlideDown {
  [self performSelector:@selector(slideAuthFormDown) withObject:nil afterDelay:0.2];
}
然后使用

[passwordTextField addTarget:self action:@selector(delayedSlideDown) forControlEvents:UIControlEventEditingDidEnd];
最后在slideAuthFormUp中添加以下行

[NSObject cancelPreviousPerformRequestsWithTarget:self];

您可能需要播放0.2延迟…

您需要在短暂延迟后执行向下滑动,如果在该时间内发生向上滑动,请取消计划的选择器。所以…有一个中间方法

- (void)delayedSlideDown {
  [self performSelector:@selector(slideAuthFormDown) withObject:nil afterDelay:0.2];
}
然后使用

[passwordTextField addTarget:self action:@selector(delayedSlideDown) forControlEvents:UIControlEventEditingDidEnd];
最后在slideAuthFormUp中添加以下行

[NSObject cancelPreviousPerformRequestsWithTarget:self];

您可能需要使用0.2延迟…

嗯。。。请看Appcodeblog网站中给出的内容。代码就在那里。。我对代码不承担任何责任,我只是引用了那个网站上我的evernote剪辑。所有的东西都在一个地方。。。从教程1到3开始

嗯。。。请看Appcodeblog网站中给出的内容。代码就在那里。。我对代码不承担任何责任,我只是引用了那个网站上我的evernote剪辑。所有的东西都在一个地方。。。从教程1到3开始

非常清楚。谢谢,它工作得很好。我只是有一个小问题,当我回到登录文本字段,但我会找到它。再次感谢。太好了,谢谢!即使是0.0(!)的延迟也对我有效,我使用了
cancelPreviousPerformRequestsWithTarget:self selector:@selector(…)object:…
,以避免影响任何其他正在执行的选择器。非常清楚。谢谢,它工作得很好。我只是有一个小问题,当我回到登录文本字段,但我会找到它。再次感谢。太好了,谢谢!即使是0.0(!)的延迟也适用于我,我使用了
cancelPreviousPerformRequestsWithTarget:self selector:@selector(…)object:…
,以避免碰撞任何其他正在执行的选择器。