我很难问这个问题。我已经看过几次了,但我不理解答案。我有一个自定义键盘,我在一个单独的视图中。它适用于一个文本框。但现在我想要有多个文本框,键盘将输入数字。我已经使视图控制器成为文本字段委托,当您输入任一文本框时,我的自定义键盘会弹出。但是,我必须设置数字的代码仅适用于其中一个文本框。所以我想检查一下哪个文本框被选中,所以我将在那个框中进行编辑。我使用了方法 - (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;
}
}
现在出现了一些奇怪的事情。当我点击第一个文本字段时,键盘出现但没有任何反应,然后我点击第二个文本字段,编辑从第一个文本字段开始。如果我单击第一个文本字段,则从第二个开始编辑。任何帮助将不胜感激!!
答案 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;
}
}