1

キーボードの上に前へと次へのボタンが付いたツールバーがあります。次のボタンを押すと、次のテキストフィールドがファーストレスポンダーになるはずですが、これは起こりません。これが私のコードです。

-(IBAction) nextfield {
    if([name isFirstResponder] == TRUE) {
        [name resignFirstResponder];
        [surname becomeFirstResponder];
        if(surname.editing == TRUE)
            NSLog(@"surname");
    }
    if([surname isFirstResponder] == TRUE) {
        [email becomeFirstResponder];
    }
    if([email isFirstResponder] == TRUE) {
        [password becomeFirstResponder];
    }
    if([password isFirstResponder] == TRUE) {
        [confirm becomeFirstResponder];
    }
    if([confirm isFirstResponder] == TRUE) {
        [country becomeFirstResponder];
    }
    if([country isFirstResponder] == TRUE) {
        if(country.text == @"United States") {
            [state setEnabled:TRUE];
            [state becomeFirstResponder];
        }
        else {
            [type becomeFirstResponder];
        }
    }
    if([state isFirstResponder] == TRUE) {
        [type becomeFirstResponder];
    }
    if ([type isFirstResponder] == TRUE) {
        [name becomeFirstResponder];
    }
}

ログ「surname」を取得しましたが、カーソルが表示されず、何かを入力してもどこにも表示されません。

4

2 に答える 2

3

つまり、名前がファーストレスポンダーであるかどうかを確認し、そうである場合は、名前をファーストレスポンダーにします。

次に、名前が最初の応答者であるかどうかを確認し、そうである場合は、電子メールを最初の応答者にします。

次に、電子メールが最初の応答者であるかどうか、およびそうであるかどうかを確認します。

あなたの問題は、ファーストレスポンダーになることは即時のことなので、これらのifステートメントのすべてが真であるということです。

else if (...)つまり、個別のifステートメントではなくステートメントを使用する必要があります。

于 2011-05-08T13:37:31.573 に答える
0

textfieldオブジェクトの配列を作成し、textFieldArrayとしましょう。次に、前と次のボタンタブでfuncに続いて呼び出します

 -(void)gotoPrevTextfield

{
  for(int i=1 ;i<[textFieldArray count];i++)
{
    if([textFieldsArray [i] isFirstResponder])
    {
        [textFieldsArray[i-1] becomeFirstResponder];
        [textFieldsArray [i] resignFirstResponder];

         break;
    }
}}

    -(void)gotoNextTextfield
   {
for( int i=0 ;i<[textFieldArray count];i++)
{
    if([textFieldsArray [i] isFirstResponder])
    {
        [textFieldsArray [i+1] becomeFirstResponder];
        [textFieldsArray [i] resignFirstResponder];

        break;
    }
}}
于 2013-12-12T11:26:52.130 に答える