2012-07-28 3 views
0

이 질문을하는 것이 좋지 않습니다. 나는 그걸 두 번이나 보았지만 대답을 이해하지 못하고있다. 별도의보기에서 만든 사용자 지정 키보드가 있습니다. 그것은 한 텍스트 상자에 큰 효과가있었습니다. 하지만 이제는 키보드에서 숫자를 입력 할 여러 텍스트 상자를 갖기를 원합니다. 텍스트 상자를 입력 할 때보기 컨트롤러를 텍스트 필드 대리자로 만들고 내 사용자 지정 키보드가 팝업됩니다. 그러나 숫자를 설정해야하는 코드는 텍스트 상자 중 하나에 대해서만 있습니다. 그래서 어떤 텍스트 상자가 선택되었는지 확인하여 해당 상자에서 편집 할 것인지 확인하고 싶었습니다.여러 텍스트 상자에 텍스트를 넣는 사용자 지정 키보드

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

currentTextField가의 UITextField입니다 ... (의 UITextField *) TextField 및 다음 코드를 시도 : (BOOL) textFieldShouldBeginEditing - 나는 방법을 사용했다. 다음 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; 
} 

내가 다음에 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

글쎄, 내가

가 currentTextField에 대한 참조를 할당하는 질문 - 컴파일러에 응답 할 수 있습니다, 그것은해야한다 :

currentTextField = self.numberOne;

대괄호는 메시지를 보낼 때 사용됩니다 (개체에 대한 호출 방법).

대괄호로 과제를 싸 웠는데 과제가 잘못되었습니다.

내가 더 이상을 진단하기 위해 더 많은 코드를 볼 필요가

(현재 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; 

}  
} 
+0

감사합니다. 컴파일러는 더 행복했습니다! 그러나 그것은 내 문제를 해결하지 못했습니다. currentTextField로 numberOne을 변경했지만, 키보드는 숫자를 텍스트 상자에 넣지 않았습니다. 텍스트 필드를 입력하면 내 키보드가 여전히 호출되지만 어떤 다른 코드를보아야합니까? 바로 알려주세요. 다시 한번 감사합니다. – Douglas

+0

currentTextField를 합성 한 경우 다음을 사용하십시오. self.currentTextField = self.numberOne; firstResponder를 변경할 때 self.userIsEnteringANumber를 NO로 재설정해야합니다 ... self.currentTextField.text = self.currentTextField를 생략 할 수 있습니다.본문; – spacious

+0

예, currentTextField를 합성했습니다. 나는 당신의 모든 팁을 사용했다. 편집 해 주셔서 감사합니다. 그러나 반대 텍스트 필드 편집 문제가 여전히 발생합니다. 그 중 하나에 대한 모든 아이디어!? – Douglas

관련 문제