2011-09-16 11 views
0

私は1つのテキストフィールドを持っています。Objective Cで関数再帰を停止するにはどうすればよいですか?

以下の機能は、txtフィールドのIBから「編集が変更されました」というUIイベントに添付されています。それは何度も何度も

を呼び出しますので、私はテキストフィールドを変更しています明らかと

関数は再帰的である任意のものがあり、私は一度それを呼び出した後に機能を停止することができます。

だから、私はあなたが静的なブール値を使用することができ

-(IBAction) testEvents:(id) sender 
{ 

    txtEditAmount.text=[txtEditAmount.text substringToIndex:([txtEditAmount.text length]-1)]; 




} 

答えて

2

ではなく、そのイベントのコールバックを使用して、そのように、UITextFieldDelegate方法textFieldDidEndEditing:を実装してみてください。

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    textField.text = [textField.text substringToIndex: 
         [txtEditAmount.text length] - 1]; 
} 

だから、唯一の最後の文字をカットしますユーザーはフィールドの編集を停止します。あなたがしようとしていることに依存していると思います。あなたは、彼らは、例えば、まだ空白のままが、パスワードフィールドは文字ユーザーの種類をキャプチャ型のどんなバックスペースにしようとしている場合は、代わりにこのようなプロトコル方式textField:shouldChangeCharactersInRange:replacementString:を実装:

- (BOOL)textField:(UITextField *)textField 
    shouldChangeCharactersInRange:(NSRange)range 
    replacementString:(NSString *)string 
{ 
    [enteredString appendString:string]; // store the character the user typed 
    return NO; // leave the field blank 
} 
+0

これは絶対にこの方法を使用するための良い方法であり、本当にありがとう私の仕事を簡素化... –

1

...このループ機能を停止したいです。

-(IBAction) testEvents:(id) sender 
{ 
    static BOOL programmaticallyChanged=NO; 
    if(programmaticallyChanged) { 
     return; 
    } 
    programmaticallyChanged=YES; 
    txtEditAmount.text=[txtEditAmount.text substringToIndex:([txtEditAmount.text length]-1)]; 
    programmaticallyChanged=NO; 
} 
+0

'' programmaticallyChanged = YES; ''とprogrammaticallyChanged = NO;の間で 'testEvents:'が呼び出されますか? – Nekto

+0

@Nekto:それは質問が意味することです。 – icktoofay

+0

もちろん、私はその 'testEvents:'がその割り当ての間に呼び出されるかどうかは確かではありませんでした。もしそれが叶うなら、偉大な解決策です。 – Nekto

2

マイバリアント

-(IBAction) testEvents:(id) sender 
{ 
    static BOOL flag = NO; 
    if (flag) {flag=NO; return;} 
    flag = YES; 
    txtEditAmount.text=[txtEditAmount.text substringToIndex:([txtEditAmount.text length]-1)]; 
} 
+0

私はそれを試しました。それはうまく働いています。私の要求にマッチする方法、ありがとう... –

1

は、このメソッドを実装し

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    return YES;//it will allow edit to you if NO it will not allow to you 
//return NO;when don,t want call that 
} 
関連する問題