UITextView에 커서가 표시되지 않음
깜박이는 커서가 표시되지 않는 이유를 누구나 생각할 수 있습니까 UITextView
? 하위 클래스 인 사용자 지정 컨트롤이 UIView
있고 여기에 포함되어 UITextView
있지만 포커스를받을 때 커서가 나타나지 않습니다. 키보드가 나타나고 입력하는 동안 텍스트가 나타나지만 커서가 없어 그 이유를 알 수 없습니다.
이견있는 사람?...
사용자 정의 UITextView에서 색조 색상을 변경했을 수 있습니다. 색조 색상이 배경색 (일반적으로 흰색)과 같으면 보이지 않게 나타납니다.
contentSize
구성 요소에 대해 및 / 또는 프레임을 잘못 설정 하여 표시하기에는 너무 작거나 컨트롤이 화면 밖에있을 수 있습니다. Debug->Color Blended Layers
해당 값이 올바르게 설정되었는지 확인하려면 시뮬레이터로 이동하십시오.
편집하다:
새로운 Xcode (아마 Xcode 6에 도입되었을 가능성이 있음)를 사용하면 "Debug View Hierarchy"(하단 막대에있는 아이콘 중 하나)를 클릭하여 이러한 종류의 문제를 디버깅 할 수 있습니다.
텍스트 필드에 커서가 표시되지만 텍스트 필드의 색조 색상이 내 경우와 같이 기본값으로 설정되어 있기 때문에 색상을 볼 수 없습니다. 스토리 보드에서 textField를 선택하고 원하는 링크 색상을 선택하기 만하면됩니다. 첨부 된 이미지를 참조하십시오.
모든 UITextView의 색조 색상을 변경하고 커서가 다음 빌드에 표시되기 시작했습니다.
간단한 해결 방법은 다음과 같이 지연을 도입 한 다음 firstResponder를 호출하여 작동하는 것 같습니다.
-(void)begin{
[self performSelector:@selector(first) withObject:nil afterDelay:0.01f];
}
-(void)first{
[tf becomeFirstResponder];
}
제 경우 becomeFirstResponder
에는 viewDidLoad
메서드를 호출 했습니다 . 나는 전화를로 옮겼고 viewDidAppear
그것은 나를 위해 일했습니다.
나를 위해, 문제는 임베딩에 의해 발생 된 UITextField
A의 UIToolbar
. 컨테이너를 간단한으로 교체 UIView
하면 커서가 다시 작동했습니다.
위의 솔루션은 제 경우에는 작동하지 않았습니다. 내 경우에 문제 UIView
는 커서 역할을하는 것이 의 가 아닌 경우로 isOpaque
설정 되었다는 것 입니다. 이것은 내가 아직 바닥에 도달하지 않은 경쟁 조건에서만 발생하는 것 같습니다.false
UITableViewCell
selectionStyle
none
FWIW는 이것을 디버깅하는 방법입니다.
- 당신을 선택하십시오
UITextFieldView
- 디버그보기 계층을 엽니 다.
UIView
올바른 위치에 커서를 나타내는이 표시 되어야 하지만 UI에는 표시되지 않습니다. - 커서를 마우스 오른쪽 버튼으로 클릭하고
UIView
"설명 인쇄 ..."를 선택합니다. 설명은OPAQUE=NO
안타깝게도 UITextSelectionView
이를 소유 한 클래스 UIView
는 비공개이므로 프로그래밍 방식으로 업데이트 할 수있는 해킹이 아닌 방법이 없습니다 isOpaque
.
이것은 모든 구현에서 문제가되는 것 같지는 않지만 여기에 내 견해 사이의 관계가 있습니다.
내 텍스트보기 대리인
extension FooViewController: UITextViewDelegate {
private func updateSelection(selectedIndex indexPath: IndexPath) {
if let oldSelected = self.table.indexPathForSelectedRow {
tableDelegate.tableView(table, didDeselectRowAt: oldSelected)
}
tableDelegate.tableView(table, didSelectRowAt: indexPath)
}
func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
guard let rowCell = getParentCell(forTextView: textView), // loops through table row cells
!rowCell.isSelected,
let indexPath = self.table.indexPath(for: rowCell)
else { return true }
updateSelection(selectedIndex: indexPath)
return false
}
내 테이블 대리인 :
class TableViewDelegate: NSObject, UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableView.ScrollPosition.none)
}
}
참고 URL : https://stackoverflow.com/questions/20959331/cursor-not-showing-up-in-uitextview
'programing tip' 카테고리의 다른 글
현장에서 중단 문제가 발생한 적이 언제입니까? (0) | 2020.11.16 |
---|---|
AngularJS http get then Construct에서 오류 처리 (0) | 2020.11.16 |
“sign_and_send_pubkey : 서명 실패 : 에이전트가 작업을 거부했습니다”를 해결하는 방법은 무엇입니까? (0) | 2020.11.16 |
확장자로 선택 가능한 파일 제한 (0) | 2020.11.16 |
Git-파일을 추가하지 않습니까? (0) | 2020.11.16 |