2011-11-21 72 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.