0

私のプロジェクトでは、アクションシートボタンを使用してテキストフィールドを作成しました.最初の作成後にユーザーインターフェイスを無効にするにはどうすればよいですか.

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex                                                                                                                                                                            
{
        if (buttonIndex==0)
            {  
                text1 = [[UITextField alloc] initWithFrame:CGRectMake(x2,y2+3, 300, 25)];
                text1.backgroundColor = [UIColor whiteColor];
                text1.clearButtonMode = UITextFieldViewModeWhileEditing;
                text1.font = [UIFont systemFontOfSize:15.0f];
                text1.placeholder=@"ENTER HOME LOAN INTEREST";
                [text1 setKeyboardType:UIKeyboardTypeNumberPad];
                text1.textAlignment=NSTextAlignmentCenter;
                text1.userInteractionEnabled=YES;
                [scrollview addSubview:text1];
                scrollview.contentSize=CGSizeMake(self.view.frame.size.width,self.view.frame.size.height+to);
                to+=to;
                y2+=30;
                img6.frame=CGRectMake(0, y2+4, 320, 60);
                y2=y2+62;
                img7.frame=CGRectMake(0, y2+5, 320, 60);
                 y2=y2-62;
            }
           else if (buttonIndex==1)
            {
                text2 = [[UITextField alloc] initWithFrame:CGRectMake(x2, y2+3, 300, 25)];
                text2.backgroundColor = [UIColor whiteColor];
                text2.clearButtonMode = UITextFieldViewModeWhileEditing;
                text2.font = [UIFont systemFontOfSize:15.0f];
                text2.placeholder=@"ENTER EDUCATION EXPENSE";
                [text2 setKeyboardType:UIKeyboardTypeNumberPad];
                text2.userInteractionEnabled=YES;
                text2.textAlignment=NSTextAlignmentCenter;
                [scrollview addSubview:text2];
                               scrollview.contentSize=CGSizeMake(self.view.frame.size.width,self.view.frame.size.height+to);

                 to+=to;

                y2+=30;

                img6.frame=CGRectMake(0, y2+4, 320, 60);
                y2=y2+60;
                img7.frame=CGRectMake(0, y2+5, 320, 60);
                 y2=y2-60;
            }

}

ユーザーが同じテキストフィールドを何度も作成できないようにするにはどうすればよいですか

4

1 に答える 1

0

プレースホルダーを除いて、2 つのテキストフィールドが同じであるかのように見えます。おそらく後で値をどうするかです。クラスのプロパティとしてアクセス可能な単一のテキストフィールドを簡単に使用できます。ストーリーボードを使用している場合、テキストフィールドをストーリーボードに配置して、おそらく「非表示」に設定できます。

共通のテキスト フィールドを作成したら、プレースホルダー テキストを設定して、アクションシートのデリゲート メソッド内でフィールドを表示できるようにします。レイアウトに他の違いがある場合は、この時点でそれらも処理できます。

このアプローチでは、後でフィールドのコンテキストを把握できるように「状態」を保持する方法が必要になります。プレースホルダーのテキストを調べることでこれを管理できますが、テキストが気まぐれに変更される可能性があるため、これは脆弱です。より良いアプローチは、たとえばtext2.tag = 1、住宅負荷の関心やtext2.tag = 2教育費などのタグ値を設定することです。後でタグ値にアクセスして、コンテキストを解釈できます。

フィールドは 1 つしかなく、プロパティからアクセスできるため、後でテキストフィールドをスーパービューから削除するか、再度非表示にして別のフラグを使用して、ユーザーに表示されたことを知ることができます。ほとんどの場合、住宅ローンの利息または教育費のいずれかの値があることを確認できます。その場合は、再度表示しないでください。

アクションシート デリゲート コールバック メソッド内からアクションシートを呼び出すボタンを非表示/削除/無効にすることもできますが、これにアクセスするにはプロパティが必要になります。

于 2013-07-11T19:46:54.170 に答える