检测编辑在一个uitextfield上结束但在另一个上开始

时间:2011-11-21 11:57:28

标签: objective-c uitextfield detect

我刚刚创建了两个函数,slideAuthViewUpslideAuthViewDown,在您输入登录名或密码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。因此,身份验证表单会在很短的时间内下降,这不是我想要的。我希望这个表格在这么短的时间内保持不变。

有人知道怎么做吗?

2 个答案:

答案 0 :(得分: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延迟...

答案 1 :(得分:0)

嗯......看看网站this example Appcodeblog中提供的here。代码来自那里..我不对代码负责,我只是引用该网站的evernote剪辑。在一个地方拥有一切。 ......从教程1到3开始。