2011-11-21 70 views
1

我刚刚创建了两个函数,即slideAuthViewUpslideAuthViewDown,当您输入登录名或密码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由密码文本框调用。所以身份验证表单在非常短的时间内下降并且不是我想要的。我希望这个表格在短时间内保持熬夜。

有人知道该怎么做吗?

回答

1

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

- (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延时...

+0

非常清楚。谢谢,它工作得很好。当我回到登录文本框时,我遇到了一些小问题,但我会解决它。再次感谢。 –

+0

太好了,谢谢!即使是** 0.0 **(!)的延迟也适用于我,并且我使用了'cancelPreviousPerformRequestsWithTarget:self selector:@selector(...)object:...'来避免打破任何其他选择器的执行。 – seaturtle

0

嗯...看看this example给出的网站here的Appcode博客。代码是从那里..我不负责代码,我只是从该网站引用我的evernote剪辑。它在一个地方拥有一切。 ...从教程1开始到3.