문제

일부 텍스트를 캡처하기 위해 멀티 라인 텍스트 필드 (UitextView)가 필요한 iPhone 응용 프로그램을 개발 중입니다.

사용자가 TextView 내부에 터치하면 FIRSTROPONDE가되고 키보드가 표시됩니다. 내가 정말로해야 할 일은 사용자가 완료되면 키보드를 제거하는 것입니다. 일반적으로 텍스트 필드를 사용하면 반환/완료 버튼 프레스는 입력 끝을 알리고 대의원을 사용하여 첫 번째 응답자를 사임합니다. 그러나 멀티 라인 텍스트 뷰를 사용하면 사용자가 새로운 라인을 추가하여 불가능합니다.

다음 옵션은 텍스트보기 외부에 터치가있는 경우 첫 번째 응답자를 사임하는 것입니다. 여기서 문제는 UitextView에 인터페이스 빌더에서 볼 수있는 이벤트가 없다는 것입니다.

iPhone 앱에서 멀티 라인 텍스트 필드를 만드는 방법은 사용자가 완료 될 때 현명한 시간에 첫 번째 응답자를 출시 할 수있는 방법은 무엇입니까?

도움이 되었습니까?

해결책

탐색 표시 줄에서 완료 버튼을 사용할 수 있습니다.

- (void)viewDidLoad {
      [super viewDidLoad];
  self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneAction:)];
}

키보드를 무시하려면 이벤트를 다음과 같이 처리하십시오.

- (void) doneAction: (id) sender{ [textView resignFirstResponder]; }

(.H 파일 선언을 기억하십시오)

다른 팁

나는 당신이 키보드의 "누락 된"완료 버튼을 애도하고 있다고 생각합니다.

명백한 접근법은 인터페이스에 첫 번째 응답자를 사임하는 다른 버튼이있는 것 같습니다.

일부 이벤트에서 키보드를 숨기는 영리한 코드는 사용하기에 직관적이라고 생각하지 않습니다.

Apple Notes 애플리케이션은 상단 오른쪽 완료 버튼을 사용하여 첫 번째 응답자를 사임합니다. 이와 같은 접근 방식은 합리적입니다.

//If user touches outside of the keypad, then the keypad will go away
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        UITouch *touch = [[event allTouches] anyObject];
        if (touch.tapCount >= 1) {
            [ZLabel resignFirstResponder];

        }
  }

모든 화면을 덮고 메소드를 추가하는 것보다 보이지 않는 버튼을 만들 수 있습니다. 나는 이런 STH가 효과가 있다고 생각합니다.

- (IBAction)backgroundClick:(id)sender{
    [textView resignFirstResponder];
}

키보드에 '완료'키를 완전히 설정 한 경우, 내가 사용하는 메소드는 내용이 변경 될 때 UitextView에서 마지막 문자를 점검하는 것입니다. 마지막 문자가 새 줄인 경우 사용자가 완료 버튼을 누릅니다. 나는 다른 버튼이 있어야한다는 두 번째 Neil의 견해를 지키지 만 때로는 고객이 원하는 것을 얻습니다.

분명히 UitextView 가이 방법이 사는 클래스를 가리 키도록 대의원을 설정해야합니다. 그만큼 - (void)textViewDidChange:(UITextView *)inTextView 메소드는 uitextViewDelegate 프로토콜의 일부입니다.

- (void)textViewDidChange:(UITextView *)inTextView {
NSString *text = inTextView.text;

if ([text length] > 0 && [text characterAtIndex:[text length] -1] == '\n') {
    message = [text substringToIndex:[text length] -1];
    [delegate messageEdited];
    [self removeFromSuperview];
}

}

  • (bool) textView : (uitextView *) TextView rithchangetextInRange : (nsRange) 범위 대체 텍스트 : (nsstring *) text {

    [txtView resignFirstResponder];
    

    반환 예; }

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top