自定义键盘将文本放在多个文本框中

时间:2012-07-28 22:13:59

标签: ios xcode textbox keyboard

我很难问这个问题。我已经看过几次了,但我不理解答案。我有一个自定义键盘,我在一个单独的视图中。它适用于一个文本框。但现在我想要有多个文本框,键盘将输入数字。我已经使视图控制器成为文本字段委托,当您输入任一文本框时,我的自定义键盘会弹出。但是,我必须设置数字的代码仅适用于其中一个文本框。所以我想检查一下哪个文本框被选中,所以我将在那个框中进行编辑。我使用了方法 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField并尝试了以下代码......

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if ([numberOne isFirstResponder]) 
{
    [self.numberOne = currentTextField];    
}
else if ([numberTwo isFirstResponder])
{
    [self.numberTwo = currentTextField];
}    
}

currentTextField是一个UItextField。然后我想用以下代码替换currentTextField来替换numberOne。

- (IBAction)buttonPressed:(UIButton *)sender 
{
NSString *button = [sender currentTitle];
NSRange decimalpoint = [self.numberOne.text rangeOfString:@"."];
if (self.userIsEnteringANumber)
{
    if ([button isEqualToString:@"."] && decimalpoint.location != NSNotFound)
    {
        self.numberOne.text = self.numberOne.text;
    }else 
        self.numberOne.text = [self.numberOne.text stringByAppendingString:button];
}else 
{
    self.numberOne.text = button;
    self.userIsEnteringANumber = YES;
}
}

然而,编译器不喜欢我的行[self.numberOne = currentTextField];我尝试了一些其他建议,但不幸的是我不明白他们在说什么。有没有人有我的新手指示?非常感谢提前。

我已经在宽敞的帮助下修复了编译器问题。谢谢。我的textFieldShouldBeginEditing方法现在......

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if ([numberOne isFirstResponder]) 
{
    self.currentTextField = self.numberOne;    
}
else if ([numberTwo isFirstResponder])
{
    self.currentTextField = self.numberTwo;
}
return YES;
} 

我将IBAction buttonPressed更改为以下内容......

- (IBAction)buttonPressed:(UIButton *)sender 
{
NSString *button = [sender currentTitle];
NSRange decimalpoint = [self.currentTextField.text rangeOfString:@"."];
if (self.userIsEnteringANumber)
{
    if ([button isEqualToString:@"."] && decimalpoint.location != NSNotFound)
    {
        self.currentTextField.text = self.currentTextField.text;
    }else 
        self.currentTextField.text = [self.currentTextField.text stringByAppendingString:button];
}else 
{
    self.currentTextField.text = button;
    self.userIsEnteringANumber = YES;
}
}

现在出现了一些奇怪的事情。当我点击第一个文本字段时,键盘出现但没有任何反应,然后我点击第二个文本字段,编辑从第一个文本字段开始。如果我单击第一个文本字段,则从第二个开始编辑。任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:0)

好吧,我可以回答你的编译问题 -

要分配对currentTextField的引用,它应该是:

currentTextField = self.numberOne;

发送消息时使用括号(在对象上调用方法)。

你把你的作业用括号括起来,作业是错误的。

(您目前正在使用currentTextField覆盖对textFields的引用)

我需要查看更多代码才能进一步诊断!祝你好运

编辑:(这些都是未经测试的更改,但您会明白这一点)

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if ([numberOne isFirstResponder] ) 
{
    self.currentTextField = self.numberOne;
    self.userIsEnteringANumber = NO;
}
else if ([numberTwo isFirstResponder])
{
    self.currentTextField = self.numberTwo;
    self.userIsEnteringANumber = NO;

}    
}