0

この質問をするのは気分が悪い。SOで数回見たことがありますが、答えがわかりません。別のビューで作成したカスタムキーボードがあります。1つのテキストボックスに最適です。しかし、キーボードが数字を入力する複数のテキストボックスが必要です。ViewControllerをテキストフィールドデリゲートにしたので、いずれかのテキストボックスに入力すると、カスタムキーボードがポップアップします。ただし、番号を設定する必要があるコードは、テキストボックスの1つのみです。そこで、どのテキストボックスが選択されているかを確認したかったので、そのボックスで編集します。メソッド-(BOOL)textFieldShouldBeginEditing:(UITextField *)textFieldを使用して、次のコードを試しました...

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

currentTextFieldはUItextFieldです。次に、numberOneを置き換えるために、次のコードでcurrentTextFieldを置き換えたいと思いました。

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

そして、IBActionbuttonPressedを次のように変更しました...

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

そして今、何か奇妙なことが起こります。最初のテキストフィールドをクリックすると、キーボードが表示されますが何も起こりません。次に、2番目のテキストフィールドを押すと、最初のテキストフィールドで編集が開始されます。最初のテキストフィールドをクリックすると、2番目のテキストフィールドから編集が始まります。どんな助けでもいただければ幸いです!!

4

1 に答える 1

0

さて、私はあなたのコンパイラの質問に答えることができます-

currentTextField への参照を割り当てるには、次のようにする必要があります。

currentTextField = self.numberOne;

ブラケットは、メッセージを送信する (オブジェクトのメソッドを呼び出す) ときに使用されます。

割り当てを括弧で囲みましたが、割り当ては間違った方法です。

(現在、textFields への参照を 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;

}    
}
于 2012-07-28T22:26:07.520 に答える