SameBoy/iOS/UILabel+TapLocation.m

28 lines
1.0 KiB
Objective-C

#import "UILabel+TapLocation.h"
@implementation UILabel (TapLocation)
- (unsigned)characterAtTap:(UITapGestureRecognizer *)tap
{
CGPoint tapLocation = [tap locationInView:self];
NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:self.attributedText];
NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
[textStorage addLayoutManager:layoutManager];
NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:CGSizeMake(self.frame.size.width,
self.frame.size.height + 256)];
textContainer.lineFragmentPadding = 0;
textContainer.maximumNumberOfLines = 256;
textContainer.lineBreakMode = self.lineBreakMode;
[layoutManager addTextContainer:textContainer];
return [layoutManager characterIndexForPoint:tapLocation
inTextContainer:textContainer
fractionOfDistanceBetweenInsertionPoints:NULL];
}
@end