TUITextView.m 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // TUITextView.m
  3. // Masonry
  4. //
  5. // Created by xiangzhang on 2022/10/14.
  6. // Copyright © 2023 Tencent. All rights reserved.
  7. //
  8. #import "TUITextView.h"
  9. #import <TUICore/TUIThemeManager.h>
  10. @implementation TUITextView
  11. - (instancetype)init {
  12. self = [super init];
  13. if (self) {
  14. self.dataDetectorTypes = UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber;
  15. [self setupLongPressGesture];
  16. self.tintColor = TIMCommonDynamicColor(@"chat_highlight_link_color", @"#6495ED");
  17. }
  18. return self;
  19. }
  20. - (BOOL)canBecomeFirstResponder {
  21. return YES;
  22. }
  23. - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
  24. return NO;
  25. }
  26. - (void)buildMenuWithBuilder:(id<UIMenuBuilder>)builder API_AVAILABLE(ios(13.0)) {
  27. if (@available(iOS 16.0, *)) {
  28. [builder removeMenuForIdentifier:UIMenuLookup];
  29. }
  30. [super buildMenuWithBuilder:builder];
  31. }
  32. - (void)disableHighlightLink {
  33. self.dataDetectorTypes = UIDataDetectorTypeNone;
  34. }
  35. - (void)setupLongPressGesture {
  36. self.longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
  37. [self addGestureRecognizer:self.longPressGesture];
  38. }
  39. - (void)handleLongPress:(UILongPressGestureRecognizer *)gesture {
  40. if ([gesture isKindOfClass:[UILongPressGestureRecognizer class]] && gesture.state == UIGestureRecognizerStateBegan) {
  41. if (self.tuiTextViewDelegate && [self.tuiTextViewDelegate respondsToSelector:@selector(onLongPressTextViewMessage:)]) {
  42. [self.tuiTextViewDelegate onLongPressTextViewMessage:self];
  43. }
  44. }
  45. }
  46. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
  47. shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
  48. if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] &&
  49. gestureRecognizer != self.longPressGesture) {
  50. return NO;
  51. }
  52. return YES;
  53. }
  54. @end