0

私の見解では、テンキータイプのキーボードを作成する必要があるiPadアプリケーションがあります。テキストフィールドと9つの数字とバックプレスボタン付き。私は 9 つのボタンとテキスト フィールドでこれを達成しました。各ボタン アクションで、次のようにその数字をテキスト フィールドの値に追加しています。

[number setText:[number.text stringByAppendingString:@"9"]];

textfield.length が 9 の場合、ボタンの背景を変更する必要があります。それ以外の場合は同じです。そのために、このような各ボタンアクションにチェックを含めます。

if ([number.text length]==9)
{
    [button setBackgroundImage:[UIImage imageNamed:@"active.png"] forState:UIControlStateNormal];
}
else 
{
    [button setBackgroundImage:[UIImage imageNamed:@"inactive.png"] forState:UIControlStateNormal];
}

次をひっくり返す前にこれをチェックしていますが、[number.text length] == 8が含まれている場合にのみ背景を9桁で変更しています。バックトレースボタンでは、最後に追加された数字を削除しています

if ( [number.text length] > 0)
{
    number.text = [number.text substringToIndex:[number.text length] - 1];
}

ここでは、操作後に数字をチェックしています。その後、正しい長さを取っています。

どんな体でも私を助けることができますか?

4

2 に答える 2

1

あなたが投稿したスニペットを見ていくと、論理的なエラーが見られます。長さが9かどうかを確認するために、チェック後に最後の桁を追加しているようです。したがって、実際にテキストフィールドの長さをチェックすると、長さは実際には8になります。チェックして追加すると、長さは9になります。

于 2012-09-13T12:12:20.663 に答える
1
-(IBAction)yourAddNewCharacterMethod:(id)sender
{
    if([number.text length] < 9)
    {
        [number setText:[number.text stringByAppendingString:@"9"]];
        if([number.text length] == 9)
        {
            [button setBackgroundImage:[UIImage imageNamed:@"active.png"] forState:UIControlStateNormal];
        }
        else
        {
            [button setBackgroundImage:[UIImage imageNamed:@"inactive.png"] forState:UIControlStateNormal];
        }
    }
}

ボタンをクリックするたびに同じことを確認する必要があります。そして、これはあなたのdeleteButtonClickedMethod

-(void)deleteButtonClickedMethod
 {
     if([number.text length] > 0)
     {
        [number deleteBackward];
     }
 }

使用する必要はありませんsubstringToIndex:

于 2012-09-13T12:16:17.923 に答える