Ios 自定义键盘将文本放入多个文本框

Ios 自定义键盘将文本放入多个文本框,ios,xcode,textbox,keyboard,Ios,Xcode,Textbox,Keyboard,问这个问题我很难过。我已经看过好几次了,但我不明白答案。我有一个在单独视图中制作的自定义键盘。对于一个文本框来说效果很好。但是现在我想要有多个文本框,键盘可以在其中输入数字。我已将视图控制器设置为textfield代理,当您输入任一文本框时,我的自定义键盘将弹出。但是,我必须设置数字的代码仅用于其中一个文本框。所以我想检查哪个文本框被选中,所以我将在该框中进行编辑。我使用了方法-(BOOL)textField应该开始编辑:(UITextField*)textField,并尝试了以下代码 - (B

问这个问题我很难过。我已经看过好几次了,但我不明白答案。我有一个在单独视图中制作的自定义键盘。对于一个文本框来说效果很好。但是现在我想要有多个文本框,键盘可以在其中输入数字。我已将视图控制器设置为textfield代理,当您输入任一文本框时,我的自定义键盘将弹出。但是,我必须设置数字的代码仅用于其中一个文本框。所以我想检查哪个文本框被选中,所以我将在该框中进行编辑。我使用了方法-(BOOL)textField应该开始编辑:(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];我试着遵循其他一些建议,但不幸的是,我不明白他们在说什么。有人给我介绍新手吗?非常感谢

在Spacube的帮助下,我已经修复了编译器问题。谢谢我的textFieldShouldBeginEditing方法现在是

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if ([numberOne isFirstResponder]) 
{
    self.currentTextField = self.numberOne;    
}
else if ([numberTwo isFirstResponder])
{
    self.currentTextField = self.numberTwo;
}
return YES;
} 
我将按下的IBAction按钮更改为以下内容

- (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;
}
}

现在奇怪的事情发生了。当我点击第一个文本字段时,键盘会弹出,但什么也没发生,然后我点击第二个文本字段,编辑从第一个文本字段开始。如果单击第一个文本字段,编辑将从第二个文本字段开始。任何帮助都将不胜感激

我可以回答你的问题-

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

currentTextField=self.numberOne

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

你把作业放在括号里,作业的方式不对

(您当前将使用currentTextField覆盖对textFields的引用)

我需要看到更多的代码来进一步诊断!祝你好运

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


感谢您对编译器问题的帮助。编译器更开心了!然而,这并没有解决我的问题。即使我用currentTextField更改了numberOne,键盘也没有将数字放在任何文本框中。尽管输入任何文本字段时仍会调用键盘。您还需要查看哪些其他代码?请告诉我。再次感谢。如果您已合成currentTextField,请使用self.currentTextField=self.numberOne;更改firstResponder时,您还需要将self.userisEnteringNumber重置为NO。。。您可以省略self.currentTextField.text=self.currentTextField.text;是的,我已经合成了currentTextField。我用了你所有的提示,谢谢你的编辑。但反向文本字段编辑的问题仍然存在。对那个有什么想法吗!?
- (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;

}    
}