2010-04-04 1 views
5

사용자가 UITextField를 도청 할 때 표시 할 사용자 지정 키보드가 있습니다. 그러나 동시에 텍스트 필드에 커서를 표시하고 싶습니다. canBecomeFirstResponder에 대해 NO를 반환하면 기본 키보드가 표시되지 않지만 커서도 표시되지 않습니다.iPhone - 키보드를 표시하지 않고 커서를 여전히 UITextField에 표시 할 수 있습니까?

누군가 나를 도울 수 있습니까?

감사합니다.

+0

(이 경우 당신은 UITextViewDelegate에서 해당 메소드를 오버라이드 (override)) 참고?별로 도움이되지 않는 이유 일 것입니다. – psychotik

+0

사용자 정의 키보드가 있습니다. 그게 내가 왜 기본 키보드를 표시하고 싶지 않지만, 그래서 그가 텍스트를 입력하는 사용자가 알고 커서를 원한다면 – Swastik

+2

확실히 이것을 사용하고 있습니다. 셰리, 대답을 찾았 니? –

답변

0

필자는 요점은 잘 모르겠지만 텍스트 필드의 내용이 같은 UILabel을 사용하고 텍스트 필드에 커서가있는 것처럼 보이게 꾸며서는 안됩니다. 입력을 원할 때 UITextField로 바꾸십시오.

+0

기본 키보드를 원하지 않습니다. 나타나다. UILabel에 커서를 어떻게 표시합니까? – Swastik

+0

아, 그렇다면 맞춤 키보드가 바로 키보드가 아니라 전체 버튼을 가짜로 만들고 싶다는 뜻입니까? – Andiih

2

등록 키보드 알림 관찰자로 (예를 들어 키보드를 숨기려는 뷰 컨트롤러) : - hideKeyboard에 넣어

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideKeyboard:) name:UIKeyboardWillShowNotification object:nil]; 

: 기능 : -에

-(void)hideKeyboard:(NSNotification *)notification { 

    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) { 
     for (UIView *keyboard in [keyboardWindow subviews]) { 
      if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) { 

       keyboard.alpha = 0; 
      } 
     } 
    } 
} 

(감사합니다 luvieere thispost 내게 키보드를 얻는 방법을 보여주기 위해)

+0

iOS4에서 작동하지 않습니다. 이 메서드는 호출 된 있지만 UIKeyboard –

+0

thnx 행복하게 접두사가있는보기가 없습니다. 정말 키보드 및 해당 작업을 표시하지 않고 내 텍스트 필드에 깜박이 커서를 표시하려면 도움이됩니다 ... –

0

문제에는 2 가지 해결책이 있습니다. 1) 키보드의 알파를 0으로 설정하면 키보드가 보이지 않게됩니다 ... 원하는 모든 것일 수 있습니다. 커서가 나타납니다.

2) UITextField는 UITextInputTraits 프로토콜을 구현합니다. 첫 번째 응답자가되면 항상 키보드를 호출합니다. 기본 동작을 변경하려면 해당 클래스 또는 다른 클래스에서 상속해야합니다.

행운을 빈다.

우리가 성취하려는 것을 우리에게 말해 준다면 우리는 그것을 성취하기위한 더 우아한 방법을 제안하려고합니다.

재미있게 보내십시오.

-1

왜 커서가 필요합니까? 필자가해야 할 일은 사용자가 키보드에서 키를 누를 때 입력의 텍스트 값을 업데이트 할 수 있다는 것입니다.

5

사용자의 키보드에 대한보기를 만든 다음 UITextFieldinputView 속성을 편집하여 사용자 지정 키보드보기로 전달하는 것이 좋습니다.

도움이 되었기를 바랍니다.

+0

고맙습니다 ArturoVM 나를 위해 잘 작동 –

4

사용자 정의 키보드가있는 UITextField가 원하는 것 같습니다. CustomKeyboard : UIView 클래스를 만들고보기/버튼 레이아웃을 추가하십시오. 그런 다음 텍스트 필드에 대해 inputView 속성을 CustomKeyboard 클래스 textField.inputView = customKeyboard; 클래스의 인스턴스로 설정하면됩니다. inputView 속성을 readwrite로 설정해야합니다. @property (readwrite, retain) UIView *inputView; inputView 속성을 설정하면 텍스트 필드가 첫 번째 응답자가 될 때 표준 iPhone 키보드가 표시되지 않습니다.

+0

(아마도 텍스트 입력이 매우 정통하지 않습니다) 다음 더미 UIView (프레임을 지정하지 않고) 만들기 및 .inputView가 잘 작동하게 만드는 사용자 지정 키보드 기능이 필요하지 않습니다. 그런 다음 textField에서 becomeFirstResponder를 호출하면됩니다. – HenryRootTwo

3

은 UITextFieldDelegate에서 다음 두 가지 메서드를 재정의합니다. 이 방식의 UITextField와 UITextView 모두 유효 함을 더 키보드는, UITextField 유용에 커서가없는 경우 어떻게

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (!textField.inputView) { 
     //hides the keyboard, but still shows the cursor to allow user to view entire text, even if it exceeds the bounds of the textfield 
     textField.inputView = [[UIView alloc] initWithFrame:CGRectZero]; 
    } 
    return YES; 
} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    return NO; 
} 
관련 문제