2012-02-14 51 views
6

Tôi có một chuỗi đến từ máy chủ mà tôi đang hiển thị trên UILabel multiligne. Nó nằm trong chuỗi đó, tôi xác định một số chuỗi con cụ thể. Tôi muốn đặt một nút trên chuỗi con đó (nút sẽ là một subview của UILabel). Đối với điều này tôi yêu cầu tọa độ chuỗi con. Tôi đã trải qua điều này nhưng tôi không thể hiểu được. Giả sử chuỗi hoàn chỉnh của tôi là abc, 567-324-6554, New York. Tôi muốn 567-324-6554 được hiển thị trên nút mà tôi cần tọa độ của nó. Làm cách nào để sử dụng liên kết ở trên để tìm tọa độ của chuỗi con? Cảm ơn,tìm vị trí {x, y} của văn bản trong uilabel

+1

UILabel là multiligne – freind

Trả lời

7

UILabel không có bất kỳ phương pháp nào để thực hiện việc này. Bạn có thể làm điều đó với UITextView, bởi vì nó thực hiện các UITextInput protocol. Bạn sẽ muốn đặt thuộc tính editable của chế độ xem văn bản thành NO.

Something như mã chưa được kiểm tra này nên làm việc:

- (CGRect)rectInTextView:(UITextView *)textView stringRange:(CFRange)stringRange { 
    UITextPosition *begin = [textView positionFromPosition:textView.beginningOfDocument offset:stringRange.location]; 
    UITextPosition *end = [textView positionFromPosition:begin offset:stringRange.length]; 
    UITextRange *textRange = [textView textRangeFromPosition:begin toPosition:end]; 
    return [textView firstRectForRange:textRange]; 
} 

Điều đó sẽ trả về một CGRect (trong văn bản xem hệ thống của phối hợp) bao gồm các chuỗi con theo quy định của stringRange. Bạn có thể đặt khung của nút này thành hình chữ nhật này, nếu bạn đặt nút thành chế độ xem phụ của chế độ xem văn bản.

Nếu chuỗi con kéo dài nhiều dòng, hình chữ nhật sẽ chỉ bao gồm dòng đầu tiên.

+0

tôi muốn tìm x và y của chuỗi này "***" trong UITextView, u có thể giúp tôi thx bro – freind

+2

Đọc câu trả lời của tôi không. –

+0

tôi cố gắng làm điều này nhưng lỗi của nó CGRect * varf = [self rectInTextView: select4 stringRange: @ "***"]; – freind

Các vấn đề liên quan