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 回答