나는 UITextView
이 있으며 두 개의 버튼이 필요합니다. 사용자가 뒤로 버튼을 누르면 커서가 1 문자 뒤로 이동합니다. 그들이 앞으로 버튼을 누르면 커서가 앞으로 1 문자 이동해야합니다. 내가 어떻게 할 수 있니?커서를 위치로 이동 목표 C
답변
아래에 링크 된 답변을 참조하여 작성했습니다. 내가 작성한 코드를 기본 프로젝트에 드롭하고 사용해 볼 수 있습니다.
솔루션 아이디어 :
프로그래밍 방식 (참고 참조) 선택 텍스트의 범위를 지정하여 텍스트 블록을 선택할 수 있습니다. 범위가 뭐니? 그것은 기본적으로 시작 위치와 길이입니다. 커서 위치 만 신경 써야하므로 길이를 무시 (즉, 0으로 유지)하고 "선택 항목"의 시작 위치를 +1 또는 -1로 조정할 수 있습니다.
참조 :
Can I select a specific block of text in a UITextField?
코드 설명 : 아래의 코드에서
, 그들 각각의 변경이 두 가지 버튼 (앞으로 및 뒤로)와 대상 방법이있다 UITextView의 커서 위치 tv
은 UITextView의 클래스 변수/속성입니다 (따라서 선언해야 함).
강령 :
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *forward = [UIButton buttonWithType:UIButtonTypeRoundedRect];
forward.frame = CGRectMake(20, 20, 100, 50);
[forward setTitle:@"Forward" forState:UIControlStateNormal];
[forward addTarget:self action:@selector(moveForward:) forControlEvents:UIControlEventTouchUpInside];
UIButton *back = [UIButton buttonWithType:UIButtonTypeRoundedRect];
back.frame = CGRectMake(130, 20, 100, 50);
[back setTitle:@"Back" forState:UIControlStateNormal];
[back addTarget:self action:@selector(moveBack:) forControlEvents:UIControlEventTouchUpInside];
tv = [[UITextView alloc] initWithFrame:CGRectMake(20, 120, 280, 100)];
[self.view addSubview:forward];
[self.view addSubview:back];
[self.view addSubview:tv];
}
-(void)moveForward:(id)sender {
UITextRange *selectedRange = [tv selectedTextRange];
// Calculate the new position, - for left and + for right
if (tv.selectedRange.location < tv.text.length) {
UITextPosition *newPosition = [tv positionFromPosition:selectedRange.start offset:1];
UITextRange *newRange = [tv textRangeFromPosition:newPosition toPosition:newPosition];
// Set new range
[tv setSelectedTextRange:newRange];
}
}
-(void)moveBack:(id)sender {
UITextRange *selectedRange = [tv selectedTextRange];
// Calculate the new position, - for left and + for right
if (tv.selectedRange.location > 0) {
UITextPosition *newPosition = [tv positionFromPosition:selectedRange.start offset:-1];
UITextRange *newRange = [tv textRangeFromPosition:newPosition toPosition:newPosition];
// Set new range
[tv setSelectedTextRange:newRange];
}
}
theSelectedRange
범위를 [theTextView selectedRange];
으로 결정하십시오.
location
속성을 theSelectedRange
으로 업데이트하거나 오프셋을 뺍니다.
선택하지 않은 경우 (삽입 점) length
속성은 0입니다.
theTextView.selectedRange = theSelectedRange;
을 사용하여 커서를 놓습니다.
새 범위가 theTextView
콘텐츠의 범위를 벗어나지 않았는지 확인하십시오.
당신은 몇 가지 코드 – Sirens
- 1. UITextView 커서를 CGPoint로 이동
- 2. C# WPF에서 그려진 원을 정착 위치로 이동
- 3. 요소를 다른 위치로 이동
- 4. b2Body를 위치로 이동
- 5. MKMapView의 주석 위치로 이동
- 6. 화면을 특정 위치로 이동
- 7. 문자열을 위치로 이동
- 8. 커서를 UITextView로 이동
- 9. 페이지를 책갈피 링크 위치로 이동
- 10. dicom 시리즈 (ImageJ)에서 지정된 위치로 이동
- 11. Cocos2d, 스프라이트를 터치 위치로 이동
- 12. jquery를 사용하여 위치로 커서를 가져 오려면 어떻게해야합니까?
- 13. PyQt4 : 컨텍스트 메뉴를 위치로 이동
- 14. 다람쥐 몸체를 스프라이트 위치로 이동
- 15. Android Scroller 고정 위치로 이동
- 16. 프로그래밍 방식으로 커서를 UiTextField로 이동
- 17. 커서를 UITextView에서 위/아래로 이동
- 18. 텍스트 커서를 특정 화면 좌표로 이동 하시겠습니까?
- 19. 어떻게 목표 C
- 20. iPhone의 네트워크를 통해 파일을 다른 위치로 이동
- 21. c : \ Users \ <username> \ .android 디렉토리를 다른 위치로 이동
- 22. 확장자를 기반으로 적절한 위치로 파일 이동
- 23. C#을 사용하여 MsWord의 텍스트 끝으로 커서를 이동 하시겠습니까?
- 24. 목표 C : 놓기 영역
- 25. 목표 - C 상수 내 목표 - C 프로젝트에서
- 26. 목표 - C 질문 목표 - C에서
- 27. 단순히 목표 - C에서 목표 - C
- 28. 목표 - C I보기 제로
- 29. 자바 스크립트를 사용하여 div의 최상위 위치로 이동
- 30. 이진 파일의 다른 위치로 인덱스 이동
에이 탄, 좋은 포괄적 인 해답을 제공 할 수 있습니다! (+1) – Anne