Mục tiêu của tôi là đánh dấu tất cả các từ viết sai chính tả có thể nhìn thấy trong UITextView.Làm thế nào để tìm kiếm hiệu quả CGRects cho các từ hiển thị trong UITextView?
Thuật toán không hiệu quả là sử dụng trình kiểm tra chính tả để tìm tất cả các từ sai chính tả trong văn bản, chuyển đổi chúng thành các đối tượng UITextRange bằng cách sử dụng positionFromPosition: inDirection: offset etc, sau đó lấy các đồ họa bằng cách sử dụng phương thức UITextInput firstRectFromRange.
Như vậy tất cả các văn bản -> sai chính tả words-> Bộ sưu tập NSRange -> Bộ sưu tập UITextRange -> Bộ sưu tập CGRect -> đánh giá cho tầm nhìn, vẽ những có thể nhìn thấy
Vấn đề là điều này đòi hỏi rằng tất cả các văn bản được kiểm tra, và tất cả các từ sai chính tả được chuyển đổi thành các đồ họa.
Vì vậy, tôi tưởng tượng con đường để đi là bằng cách nào đó tìm hiểu những gì các bộ phận của .text tiềm ẩn trong UITextView đó là nhìn thấy được vào lúc này.
Như vậy cho hàng loạt các văn bản rõ ràng -> sai chính tả words-> Bộ sưu tập NSRange -> Bộ sưu tập UITextRange -> CGRect bộ sưu tập -> đánh giá cho tầm nhìn, vẽ những có thể nhìn thấy
Các mã trong ios - how to find what is the visible range of text in UITextView? có thể làm việc như một cách để ràng buộc phần nào của văn bản cần kiểm tra, nhưng vẫn yêu cầu tất cả văn bản được đo lường, điều tôi tưởng tượng có thể khá tốn kém.
Mọi đề xuất?
Nice. Để có hiệu quả, hãy tìm kết thúc bằng cách di chuyển các ký tự có độ dài chuyển tiếp từ đầu - chỉ ra rằng nó chậm đi từ đầu trong tài liệu, nhưng rẻ tiền để thăng tiến. –
Khi bạn nói, "một cái gì đó như thế này sẽ làm việc", có bạn thực sự đã thử nó? Điều này đang trở lại gần gấp ba lần phạm vi của văn bản trực quan thực tế đối với tôi. Cảm ơn. –
@JasonTyler [Đây là một repo có chứa một ứng dụng thử nghiệm.] (Https://github.com/mayoff/textview-visible-range) Hoạt động tuyệt vời cho tôi. Có thể yêu cầu Xcode 6. –