数字パッドにこの小数を追加すると何が足りませんか?

iphone
数字パッドにこの小数を追加すると何が足りませんか?

私は先週、この問題を見つめてきました。 数え切れないほどのジョーのカップ、キーボードを踏む猫、そして後でラップトップから降りてほしいと願うガールフレンド-私はまだこれを理解することができません。 私が見ている非常に愚かな(100%のチャンス)をしていることを願っています。

数字パッドに小数を追加するコードがあります。 ほとんどのコードはここ(http://brygruver.squarespace.com/blog/2009/10/1/creating-a-custom-number-pad.html?lastPage=true&postSubmitted=true)から取得したもので、彼のコードは、合計5つのフィールドの最後の2つのフィールドに小数点と小数点の画像のみを追加するように少し変更しました。

10進数の画像を表示し、入力に追加するコードは次のとおりです。

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    // We need to access the dot Button declared in the Delegate.
    helloAppDelegate *appDelegate = (helloAppDelegate *)[[UIApplication sharedApplication] delegate];

    // Only if we are editing within the Number Pad Text Field do we want the dot.
    if (textField == txtUserName4) {
        // Show the Dot.
        appDelegate.dot.hidden = NO;
    }
    else if (textField == txtUserName5) {
        // Show the Dot.
        appDelegate.dot.hidden = NO;
    }
    else {
        // Otherwise, Hide the Dot.
        appDelegate.dot.hidden = YES;
    }
}

- (void)addDecimal:(NSNotification *)notification {
    // Apend the Decimal to the TextField.
    if (txtUserName4.editing) {
        txtUserName4.text = [txtUserName4.text stringByAppendingString:@"."];
    }
    else if (txtUserName5.editing) {
        txtUserName5.text = [txtUserName5.text stringByAppendingString:@"."];
    }

ここで何が起こっているかのビデオです(http://screencast.com/t/OTNhODRiYjAt)。 _警告エラーを表示しない限り、小数は表示されません。その後、両方のフィールドで正しく表示されます。

SO、フィールド検証をオフにし、衝撃的なことに、最後の2つのフィールド(http://screencast.com/t/ZmQyOTc1MT)に小数が表示されます。 だから、小数を示すコードではなく、私が持っている検証でなければなりません。

ここに私が持っている検証があります。 私は、テキストフィールドがゼロであるか、ファーストレスポンダーであるボールをドロップしていると思っていますか?

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    if (textField == txtUserName)
    {
        NSString *userNameOne = txtUserName.text;
        double numOne = [userNameOne doubleValue];

        if(numOne < 30 || numOne > 80)
        {

            //show alert
            //release alert

            //if there is alert then clear out the field and make that the FR


            [txtUserName becomeFirstResponder];
            txtUserName.text = nil;
        }
        else
        {
            [txtUserName2 becomeFirstResponder];
        }
    }

    else if (textField == txtUserName2)
    {

        NSString *userNameThree = txtUserName2.text;
        float numTwo = [userNameThree doubleValue];

        if (numTwo < 20 || numTwo > 32)
        {
            //show alert
            //release alert

            //if there is alert then clear out the field and make that the FR


            [txtUserName2 becomeFirstResponder];
            txtUserName2.text = nil;
        }
        else
        {
            [txtUserName3 becomeFirstResponder];
        }
    }
    else if (textField == txtUserName3)
    {
        NSString *userNameThree = txtUserName3.text;
        float numThree = [userNameThree doubleValue];

        if (numThree < 475 || numThree > 650)
        {
            //show alert
            //release alert

            //if there is alert then clear out the field and make that the FR


            [txtUserName3 becomeFirstResponder];
            txtUserName3.text = nil;
        }
        else
        {
            [txtUserName4 becomeFirstResponder];

        }
    }
    else if (textField == txtUserName4)
    {
        NSString *userNameFour = txtUserName4.text;
        double numFour = [userNameFour doubleValue];

        if (numFour < 0.5 || numFour > 3.00)
        {

            //show alert
            //release alert

            //if there is alert then clear out the field and make that the FR


            [txtUserName4 becomeFirstResponder];
            txtUserName4.text = nil;
        }
        else
        {
            [txtUserName5 becomeFirstResponder];
        }
    }
    else if (textField == txtUserName5)
    {
        NSString *userNameFive = txtUserName5.text;
        double numFive = [userNameFive doubleValue];

        if (numFive > 0.80)
        {
            //show alert
            //release alert

            //if there is alert then clear out the field and make that the FR
            [txtUserName5 becomeFirstResponder];
            txtUserName5.text = nil;
        }
        else
        {
            [txtUserName5 resignFirstResponder];
        }
    }
}

私は本当に困惑していますが、少なくともそれが私の検証で物事を混ぜているものであることがわかりました…​

編集:次のフィールドを最初のレスポンダーにする「else」をコメントアウトすると、すべてが正常に機能することがわかりました。

そうは言っても、「else」を削除すると、検証で実際に何かが損なわれますか? この完全な検証は、基本的なキーボードを使用していたときに「完了」ボタンと「次へ」ボタンを使用するというアイデアで行われました。 今、私は私の検証コード全体が少し欠けているのを見ています:)

  0  1


ベストアンサー

`-becomeFirstResponder`を呼び出すと、キーボードが再描画されます。これは、キーボードビューを、上に浮かんでいる魔法の「ドット」ビューの上に押している可能性があります。 最初のレスポンダーを切り替えるたびに、「ドット」ビューで `-bringSubviewToFront:`を呼び出す必要があります。

0


タイトルとURLをコピーしました