Since this is a bug in iOS I decided to use the work-around from here by just drawing a line to the context (see comments in code):
+(void)drawUnderlinedText:(NSString *)text withFont:(UIFont *)font andColor:(UIColor *)color andLocationX:(int)locationX andLocationY:(int)locationY andTextAreaWidth:(int)textWidth andTextAreaHeight:(int)textHeight{
NSDictionary *attributesDict;
NSMutableAttributedString *attString;
// Commented out until iOS bug is resolved:
//attributesDict = @{NSUnderlineStyleAttributeName : [NSNumber numberWithInt:NSUnderlineStyleSingle], NSForegroundColorAttributeName : color, NSFontAttributeName : font};
attributesDict = @{NSForegroundColorAttributeName : color, NSFontAttributeName : font};
attString = [[NSMutableAttributedString alloc] initWithString:text attributes:attributesDict];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor);
CGRect rect = CGRectMake(locationX, locationY, textWidth, textHeight);
// Temporary Solution to NSUnderlineStyleAttributeName - Bug:
CGContextSetStrokeColorWithColor(context, color.CGColor);
CGContextSetLineWidth(context, 1.0f);
CGSize tmpSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(200, 9999)];
CGContextMoveToPoint(context, locationX, locationY + tmpSize.height - 1);
CGContextAddLineToPoint(context, locationX + tmpSize.width, locationY + tmpSize.height - 1);
CGContextStrokePath(context);
// End Temporary Solution
[attString drawInRect:rect];
}