2012-12-28 7 views
1

UITextField에 커서 뒤로 이동을 방지하려고합니다. 또는 이미 입력 된 두 문자 사이에 텍스트를 입력하지 않아야합니다. 어떻게해야합니까?UITextField 커서 뒤로 이동

답변

1

사용자가 돋보기를 사용하지 못하게하는 속성이나 방법은 없습니다 특정 텍스트 필드에 유리. 당신은 문자열 내의 모든 문자를 차단 시도 할 수 있습니다 : Disable Magnifying Glass in UITextField :

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if(range.location < textField.text.length) return NO; else return YES; 
} 

은 몇 가지 조사 후, 나는이 질문을 발견했다. 사용자가 필드를 두드리지 수 있도록

또한 NO에 userInteractionEnabled 설정할 수 있습니다 허용 대답의 저자는 그것을 할 수있는 방법이 말했다. 사용자가 포커스를 탭 할 수 없으므로 필드 이 포커스를 얻도록 수동으로 becomeFirstResponder를 호출하십시오.

그러나 내가 알기 론, setUserInteractionEnabled:NO은 첫 번째 응답자가되지 않기 때문에 작동하지 않습니다. 두 번째 연구 후에 또 다른 질문을 발견했습니다 : Show UITextField keyboard on firstResponder even when userInteractionEnabled = NO.

내가 무엇을하는 것은보기에 숨겨진 텍스트 필드를 추가하고 그 위에 becomeFirstResponder를 호출 할 수 있습니다 : MaxGabriel 사용자는 그가 그것을 할 수있는 방법을 발견 주장하고있다. 사용자는이 텍스트 필드 이 있는지 모릅니다. 텍스트 필드의 델리게이트 콜백에서 사용자가 입력 한 텍스트를 으로 가져 와서 UITextView에 추가합니다 ( 질문과 같이 UITextField와 같이 원하는 텍스트에 텍스트를 추가 할 수 있지만). 보이는 텍스트 보기에 대해 userInteractionEnabled를 해제합니다. 이것은 당신이 원하는 결과를 만듭니다.

스택 오버플로는 거대한 데이터베이스로, 질문을하기 전에 약간의 연구가 도움이 될 것입니다.

+0

해결책은 훌륭한 출발이지만 사용자가 문자열의 끝에서 삭제할 수 없기 때문에주의해야합니다. – atreat

0

의 UITextField에 진입 텍스트를 중지하는 경우, 당신은 당신의 요구 사항에 따라 논리를 수정 대리자 메서드

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
//Set tag for a textfield 
    if(textField.tag==10) 
    { 
     NSUInteger newLength = [textField.text length] + [string length] - range.length; 
     return (newLength < [textField.text length]) ? NO : YES; 
    } 
} 

을 UITextField에 사용해야합니다. 두 문자 사이에 텍스트를 입력하지 못하게하려면 NSRange를 사용하고 범위의 텍스트 필드 텍스트가 텍스트 필드 텍스트 길이보다 작 으면 반환 다음 텍스트가 UITextField에 입력되지 않습니다

0

당신은 캐럿 이동을 금지 할 수는 없지만 텍스트가 이미 입력 된 문자열 내부에 입력 된 경우는 수동으로 텍스트 필드에 텍스트를 변경 있지 않은 경우, 테스트를 위해 UITextFieldDelegate의 방법 textField:shouldChangeCharactersInRange:replacementString:을 사용하고 selectedTextRange의 도움으로 마지막에 caret를 이동할 수 있습니다 UITextInput 프로토콜의 속성.