UITextView에 커서가 표시되지 않음
깜박이는 커서가 나중에 나타나지 않는 이유를 생각해 낼 수 있습니까?UITextView
하위 클래스에 불과한 사용자 지정 컨트롤이 있습니다.UIView
그리고 그것은.UITextView
커서는 커서가 포커스를 맞출 때 나타나지 않습니다.키보드가 나타나고 입력하는 대로 텍스트가 나타나지만 커서가 없어서 이유를 알 수 없습니다.
무슨 생각 있어요?
사용자 정의 UI 텍스트 보기에서 색조 색상을 변경했을 수 있습니다.색조 색상이 배경색(일반적으로 흰색)과 동일하면 보이지 않는 것으로 나타납니다.
잘못 설정한 것일 수 있습니다.contentSize
또는 구성 요소의 프레임이 너무 작아서 보이지 않거나 컨트롤이 화면 밖에 있습니다.시뮬레이터에 들어가십시오.Debug->Color Blended Layers
값이 올바르게 설정되었는지 확인합니다.
편집:
새로운 Xcode(Xcode 6에 도입된 것으로 추정됨)를 사용하면 "Debug View Hierarchy(디버그 보기 계층)"를 클릭하여 이러한 문제를 디버그할 수 있습니다(아래쪽 막대의 아이콘 중 하나).
텍스트 필드에 커서가 표시되지만 텍스트 필드의 색조 색상이 기본값으로 설정되어 있기 때문에 색상을 볼 수 없습니다.스토리보드에서 textField를 선택하고 원하는 링크 색상을 선택하기만 하면 됩니다.첨부된 이미지를 참조하십시오.
모든 UI 텍스트 보기의 색조를 변경하고 커서가 다음 빌드에 표시되기 시작했습니다.
간단한 해결 방법은 지연을 도입한 후 다음과 같이 firstResponder를 호출하면 효과가 있는 것 같습니다.
-(void)begin{
[self performSelector:@selector(first) withObject:nil afterDelay:0.01f];
}
-(void)first{
[tf becomeFirstResponder];
}
제 경우에는, 제가 전화를 했습니다.becomeFirstResponder
순식간에viewDidLoad
방법.통화를 로 이동했습니다.viewDidAppear
그리고 그것은 저에게 효과가 있었습니다.
나를 위한 일하는 목발:
DispatchQueue.main.async {
self.textView.becomeFirstResponder()
self.textView.insertText(" ")
self.textView.deleteBackward()
}
나에게, 그 문제는 임베디드에서 발생했습니다.UITextField
순식간에UIToolbar
일단 내가 컨테이너를 단순하게 교체했을 때.UIView
커서가 다시 작동했습니다.
나의 경우 위의 해결책이 작동하지 않았습니다.제 경우의 문제는UIView
커서의 역할을 수행합니다.isOpaque
로 설정한.false
그 때UITableViewCell
의selectionStyle
…과는 전혀 다릅니다none
이것은 제가 아직 바닥에 도달하지 못한 경주 조건에서만 발생하는 것 같습니다.
FWI 디버깅 방법은 다음과 같습니다.
- 선택
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)
}
}
저는 tintColor가 아니라 carletRect 메서드를 재정의하여 발생했습니다.이 방법을 제거한 것이 제 경우를 해결했습니다.
open override func caretRect(for position: UITextPosition) -> CGRect {
return CGRect.zero
}
저도 같은 문제에 직면했고 주어진 답변을 시도했지만 텍스트 뷰에서 커서를 볼 수 없었습니다.왜냐하면 다른 무언가가 문제를 일으키고 있었기 때문입니다.그래서 여러분 중 일부는 저와 같은 흔치 않은 문제가 있을 수 있습니다. 이것이 여러분에게 도움이 될 것입니다.
커서 표시 문제의 원인이 되는 이 메서드를 재정의했습니다.
override func caretRect(for position: UITextPosition) -> CGRect {
return .zero
}
그래서 그냥 이 대사들을 댓글로 달았는데 저한테는 잘 통했어요.
언급URL : https://stackoverflow.com/questions/20959331/cursor-not-showing-up-in-uitextview
'programing' 카테고리의 다른 글
스위프트 콤바인에서 @Published를 사용하여 계산된 속성과 동등합니까? (0) | 2023.08.23 |
---|---|
VBA 코드를 사용하여 데이터 복사 및 붙여넣기 (0) | 2023.08.23 |
UICollectionView에서 레이아웃을 동적으로 설정하면 설명할 수 없는 contentOffset 변경이 발생함 (0) | 2023.08.23 |
ASP의 경우 "모델을 만드는 동안에는 컨텍스트를 사용할 수 없습니다." 예외입니다.NET 아이덴티티 (0) | 2023.08.23 |
UIView에서 두 모서리를 둥글게 만듭니다. (0) | 2023.08.23 |