session-ios/SignalUtilitiesKit/Shared Views/OWSTextView.m

68 lines
1.8 KiB
Objective-C

//
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
#import "OWSTextView.h"
#import "Theme.h"
#import <SessionUIKit/SessionUIKit.h>
NS_ASSUME_NONNULL_BEGIN
const UIDataDetectorTypes kOWSAllowedDataDetectorTypes
= UIDataDetectorTypeLink | UIDataDetectorTypeAddress | UIDataDetectorTypeCalendarEvent;
const UIDataDetectorTypes kOWSAllowedDataDetectorTypesExceptLinks
= UIDataDetectorTypeAddress | UIDataDetectorTypeCalendarEvent;
@implementation OWSTextView
- (instancetype)initWithFrame:(CGRect)frame textContainer:(nullable NSTextContainer *)textContainer
{
if (self = [super initWithFrame:frame textContainer:textContainer]) {
[self ows_applyTheme];
}
// Setting dataDetectorTypes is expensive. Do it just once.
self.dataDetectorTypes = kOWSAllowedDataDetectorTypes;
return self;
}
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder]) {
[self ows_applyTheme];
}
self.dataDetectorTypes = kOWSAllowedDataDetectorTypes;
return self;
}
- (void)ows_applyTheme
{
self.keyboardAppearance = LKAppModeUtilities.isLightMode ? UIKeyboardAppearanceDefault : UIKeyboardAppearanceDark;
}
// MARK: -
- (void)ensureShouldLinkifyText:(BOOL)shouldLinkifyText
{
if (shouldLinkifyText) {
// Setting dataDetectorTypes can be expensive, so we only update it when it's changed.
if (self.dataDetectorTypes != kOWSAllowedDataDetectorTypes) {
self.dataDetectorTypes = kOWSAllowedDataDetectorTypes;
}
} else {
// Setting dataDetectorTypes can be expensive, so we only update it when it's changed.
if (self.dataDetectorTypes != kOWSAllowedDataDetectorTypesExceptLinks) {
self.dataDetectorTypes = kOWSAllowedDataDetectorTypesExceptLinks;
}
}
}
@end
NS_ASSUME_NONNULL_END