Tôi chỉ muốn thêm vào câu trả lời của Ramshad, về cách đối phó với khung hợp lệ.
Đối với điều này bạn có thể muốn xem xét sử dụng UITextView thay vì UILabel, mà không cung cấp cho bạn truy cập vào nó như thế nào quản lý bố trí văn bản. Bằng cách tắt biên tập, lựa chọn và di chuyển, UITextView cư xử gần giống như một UILabel, ngoại trừ một số padding bạn phải gỡ bỏ.
Để thuận tiện, bạn có thể muốn thêm một danh mục nhỏ vào UITextView, trong đó bạn viết một phương pháp để kiểm tra xem một điểm có chạm vào bất kỳ ký tự nào trong phạm vi không.
- (BOOL)point:(CGPoint)point touchesSomeCharacterInRange:(NSRange)range
{
NSRange glyphRange = [self.layoutManager glyphRangeForCharacterRange:range actualCharacterRange:NULL];
BOOL touches = NO;
for (NSUInteger index = glyphRange.location; index < glyphRange.location + glyphRange.length; index++) {
CGRect rectForGlyphInContainer = [self.layoutManager boundingRectForGlyphRange:NSMakeRange(index, 1) inTextContainer:self.textContainer];
CGRect rectForGlyphInTextView = CGRectOffset(rectForGlyphInContainer, self.textContainerInset.left, self.textContainerInset.top);
if (CGRectContainsPoint(rectForGlyphInTextView, point)) {
touches = YES;
break;
}
}
return touches;
}
Điều này cũng sẽ làm việc cho một đoạn văn bản chứa nhiều từ trải rộng trên nhiều dòng do bọc từ. Nó cũng sẽ làm việc trên các văn bản được bản địa hóa khi chúng ta xử lý các ký tự được in.
Nguồn
2015-11-06 09:50:38
Hi Li, cậu kiểm tra mã này? – Zeb