当编辑在一个uitextfield上结束时检测,但在另一个uitextfield上开始时检测
问题描述:
我刚刚创建了两个函数,即slideAuthViewUp
和slideAuthViewDown
,当您输入登录名或密码UITextfield
时会调用这两个函数。在横向模式下查看整个身份验证表单非常有用。当编辑在一个uitextfield上结束时检测,但在另一个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延时...
答
嗯...看看this example给出的网站here的Appcode博客。代码是从那里..我不负责代码,我只是从该网站引用我的evernote剪辑。它在一个地方拥有一切。 ...从教程1开始到3.
非常清楚。谢谢,它工作得很好。当我回到登录文本框时,我遇到了一些小问题,但我会解决它。再次感谢。 –
太好了,谢谢!即使是** 0.0 **(!)的延迟也适用于我,并且我使用了'cancelPreviousPerformRequestsWithTarget:self selector:@selector(...)object:...'来避免打破任何其他选择器的执行。 – seaturtle