LoginSignup
17
15

More than 5 years have passed since last update.

UITextViewでURLや電話番号をリンク化しつつ編集可能にする方法

Posted at

UITextViewにはURL、日付、電話番号、住所を自動的に検出してリンクにする機能がありますが、これを有効にするにはeditableプロパティをNOにして編集不可にしなければなりません。編集が不可だと文字通り編集できず、画面をタップしてもキーボードが出てきません。しかし、アップル製メモアプリでは閲覧時にはリンクを有効にしつつも、画面をタップすると編集できます。これと同じことを実現する方法を開示します。

Objective-C

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.textView.delegate = self;
    self.textView.dataDetectorTypes = UIDataDetectorTypeAll;
    self.textView.editable = NO;
    [self.textView addGestureRecognizer:[[UITapGestureRecognizer alloc]
                                         initWithTarget:self
                                                 action:@selector(handleGesture:)]];
}

- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
    self.textView.editable = YES;
    CGPoint touchPoint = [gestureRecognizer locationInView:self.textView];
    UITextPosition *position = [self.textView closestPositionToPoint:touchPoint];
    self.textView.selectedTextRange = [self.textView textRangeFromPosition:position
                                                                toPosition:position];
    [self.textView becomeFirstResponder];
}

- (void)textViewDidEndEditing:(UITextView *)textView
{
    self.textView.editable = NO;
}

17
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15