2012-03-17 2 views
0

내가 코드 다음 한 - (무효)은 내가 프로그래밍 내 UITextView에서 텍스트를 선택하려는, 즉UITextview에서 동시에 키보드를 숨기고 텍스트를 프로그래밍 방식으로 선택하는 방법은 무엇입니까?

[txtView becomeFirstResponder]; 
[txtView setSelectedRange:NSMakeRange(0, 10)]; 

을의 viewDidLoad. 동시에 키보드를 표시하고 싶지 않습니다.

[txtView setEditable:NO]; 

또는

[txtView resignFirstResponder]; 

가 키보드 멀리 숨길 수 있도록 있지만

는, 그러나 어느 쪽이든 또한 텍스트 선택을 사라지게 - 나는 다음 코드를 추가했습니다.

요약하면 프로그래밍 방식으로 텍스트를 선택하고 키보드를 동시에 비활성화하고 싶습니다. 나는 이것이 가능하다고 생각한다. 왜냐하면 내가 [txtView setEditable : NO]; 화면에서 텍스트를 선택하기 위해 계속 터치 할 수 있습니다. 질문은 프로그래밍 방식으로 모든 작업을 수행하는 방법을 모른다는 것입니다. 누군가 나를 도울 수 있습니까? -resignFirstResponder에 워드 프로세서

+1

이,

쓰기이 코드를보고 그리고 난 당신이 HIG을 위반하고자하는 이유에 요청할 수 있습니다? – CodaFi

답변

1

:

서브 클래스가 상태를 업데이트하거나 선택 강조 표시를 해제 일부 작업을 수행하거나, 첫 번째로 반응 상태를 포기 을 거부, NO 반환이 메소드를 오버라이드 (override) 할 수

. 이 메서드를 재정의하는 경우 코드에서 코드의 특정 시점에 super (구현 클래스)를 호출해야합니다.

- (BOOL)resignFirstResponder { 
    [self setEditable:NO]; 
    [self setSelectedRange:NSMakeRange(0, 10)]; 
    return YES; 

} 

이론적으로,이 작업을해야하지만, resignFirstResponder 내부의 핵심적 껄끄 러운 너무 많이 좋아되지 않을 수 있습니다

당신은 가능성이처럼 -resignFirstResponder 방법을 UITextView의 하위 클래스를 재정의해야합니다.

0

이렇게하는 데 약간의 지연을 사용할 수 있습니다. viewDidLoad에

[txtView becomeFirstResponder]; 
[txtView setSelectedRange:NSMakeRange(0, 10)]; 
[self performSelector:@selector(resignKeyBoard) withObject:nil afterDelay:.5]; 

-(void)resignKeyBoard 
{ 
    [txtView resignFirstResponder]; 
} 
+0

이수 (이슈)님께 고마워요.하지만 제가 원하는 것이 아니기 때문에, 선택은 지체 된 후에도 여전히 사라집니다. – Nohappy

+0

@ Nohappy, 그러면 NSAttributedString이 필요하고 UITextView의 내용을 가져오고 선택한 부분 텍스트는 선택을 표시하기 위해 다른 색상으로 변경되어야합니다. – Ishu

관련 문제