문제

uitextfield가 있고 텍스트가 입력되면 텍스트 필드에서 DoubleValue를 얻고 일부 계산을 수행하고 UitableView에 표시하고 싶습니다.

Uitextfield 대의원은 UitextFieldDelegate 프로토콜을 채택하고 TextFieldShouldReTurn : 및 TextFieldDidenditing : Methods를 모두 구현합니다. TextFieldShouldReTurn : 문서에 따르면 TextFieldDidededitation을 트리거 해야하는 첫 번째 응답자 상태를 사임하지만 TextFieldDidenditing : 호출.

- (BOOL)textFieldShouldReturn:(UITextField*)theTextField {
    if (theTextField == thresholdValue) {
        [thresholdValue resignFirstResponder];
    }
    return YES;
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    [self updateThresholdValue:textField];
}

텍스트 필드 이벤트 중 일부를 대의원에 연결하고 이벤트가 업데이트 된 hordethresholdValue : 직접적으로 호출하려고 시도했지만 작동하지는 않았다는 점에 주목할 가치가 있습니다.

도움이 되었습니까?

해결책 3

주석 중 하나에서 언급했듯이 Helloworld 앱을 사용하려는 것의 간단한 버전을 복제하려고 시도했으며 예상대로 문제없이 첫 번째 시도에서 작동했습니다. 그것에 직면하여, 나는 조금 궁금해하기 시작했다.

이 문제에 대한 답변을 얻으려고했던 모든 인터넷 검색의 어딘가에서, 나는 사람이 버튼에서 발사하지 않는 사건에 문제가있는 링크를 가로 질러 달렸으며, 문제가 다음의 관점과 관련이 있음이 밝혀졌습니다. 버튼을 배치하고 버튼의 피어로서 다른 하위 뷰를 갖는 뷰는 그 하위 뷰가 어떻게 든 이벤트가 지시 된 곳으로 가도록하는 것이 아니라 이벤트를 먹는 것이 었습니다. 시나리오는 내 것과 정확히 같지 않았지만 조사가 가치가있을 정도로 충분히 가깝게 들렸습니다. 여기서받은 모든 훌륭한 조언에도 불구하고 아직 과일을 겪지 않았습니다.

어젯밤 나는 NIB 파일을 처음부터 완전히 재창조하기로 결정했고 (내가 처음 가지고 있던 것의 사본을 만들었습니다), 나는 그것을 작동 시켰습니다. 주요 차이점은 원래 비 작업 NIB 파일에서 내가 TableViewController 팔레트에서 유형을 내 서브 클래스로 변경했습니다. PZTableViewController. 새 NIB에서 같은 일을했을 때 이벤트는 발사되지 않았습니다. 반면에 드래그 오버를 제거했다면 TableViewController 대신 그냥 끌었습니다 NSObject 그리고 수업을 변경했습니다 PZTableViewController 그리고 모든 것을 배관했습니다.

나는이 사고 라인에서 시작한 링크를 쫓아 내고 편집 또는 의견으로 게시하려고 노력할 것입니다.

이것은 또한 말레의 차이를 아직 이해하지 못하기 때문에 완전한 대답이 아닙니다. TableViewController 그리고 내 서브 클래스. 내가 알아 내면 편집 또는 댓글을 통해이 답변을 업데이트하겠습니다.

다른 팁

당신이 설명한 것과 동일한 문제를 해결했습니다. 내가 생각할 수있는 모든 것을 시도한 후이 대의원 방법을 추가했습니다.

// if we encounter a newline character return
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{   
    // enter closes the keyboard
    if ([string isEqualToString:@"\n"])
    {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

이제 Textfield는 화재를 일으키고 텍스트 필드는 첫 번째 응답자를 사임합니다.

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

TextfieldDidenditing은 Textfield가 첫 번째 응답자 상태라고 사임하면 TextfieldShouldReTurn이 시작되면 반환 버튼을 누르면 발사되면 발사됩니다.

그것 소리 당신의 텍스트 필드는 결코 FIRSTREPONDER로 사임하지 않습니다. 디버그 출력 (주석에 제안 된 바와 같이)을 넣고 터치로 텍스트 필드에서 탐색하여 꽤 쉽게 확인할 수 있습니다. 예를 들어, 타이핑을 시작한 다음 필드 밖에서 터치하여 FIRSTROPERD를 사임하도록 강요합니다.

그것이 많은 도움이되는지 확실하지 않지만, 당신이 타격하는 이상한 경우처럼 들립니다.

나는 나머지 콜백으로 모든 코너 케이스를 덮는 방법을 알아 내지 않고 텍스트 필드에 모든 단일 변경을 녹음하기 위해 편집 변경을 배선했습니다.

TextFieldDidenditing (sarcasm)의 Android와 같은 "유용성"으로 인해 매우 "효율적".

입양 한 경우 uitextfielddelegate View Controller의 프로토콜을 다음 다음 코드 줄을 작성하십시오. ViewDidload 메소드 위의 프로토콜의 메소드를 해당 텍스트 필드로 활성화하는 방법 :

override func viewDidLoad() {
    //other stuff
    yourTextField.delegate = self
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top