Как бы я перетащил UITextView вокруг экрана просмотра? - PullRequest
0 голосов
/ 12 июля 2010

У меня есть проект, в котором UITextView (для мультилиней) можно перетаскивать по экрану. До сих пор моим решением было наложение невидимого UIButton, который при перетаскивании его центра совпадает с центром UITextView.

Однако я видел приложения, которые, кажется, просто позволяют перетаскивать и редактировать UITextView на лету, поэтому кажется, что в них не может быть наложения, но я не уверен.

Мысли

Кстати, c в этом коде - это UIButton, и вот как я его переместил:

- (void) draggedOut: (UIControl *) c withEvent: (UIEvent *) ev 
{

 if(self.interfaceOrientation == UIInterfaceOrientationPortrait)
 {
  c.center = [[[ev allTouches] anyObject] locationInView:self.view];
  AddedText.center = c.center;
 }
 else if(self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
 {
  c.center = [[[ev allTouches] anyObject] locationInView:self.view];
  AddedText.center = c.center;
 }
 else if(self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
 {
  c.center = [[[ev allTouches] anyObject] locationInView:self.view];
  AddedText.center = c.center;
 }
 else if(self.interfaceOrientation == UIInterfaceOrientationLandscapeRight)
 {
  c.center = [[[ev allTouches] anyObject] locationInView:self.view];
  AddedText.center = c.center;
 }
}

Ответы [ 3 ]

1 голос
/ 21 декабря 2016
- (void)panTextView:(UIPanGestureRecognizer *)recognizer {
      NSLog(@"panning");

 location1 = [recognizer translationInView:draggableTextView];


    recognizer.view.center = CGPointMake(recognizer.view.center.x + location1.x,
                                    recognizer.view.center.y + location1.y);



        [recognizer setTranslation:CGPointMake(0,0) inView:draggableTextView];

     location1 =[recognizer locationInView:draggableTextView];
       NSLog(@"tranlation %@",NSStringFromCGPoint(location1));

     [_imgpic addSubview:recognizer.view];

 appDelegate.txt=draggableTextView.text;
}

вызовите этот метод после создания textview.

0 голосов
/ 13 ноября 2010

Нужно ли textView поддерживать прокрутку?Если это так, это может осложниться.

Но если нет, есть два подхода.1) создать подкласс textview и переопределить прикосновения Beg, touchesMoved, touchesEnded.2) написать распознаватель жестов, который обрабатывает те же сообщения и прикрепить его к текстовому представлению.

Вот пример распознавателя жестов, который будет выполнять эту работу:

@interface TouchMoveGestureRecognizer : UIGestureRecognizer
{
    CGPoint _ptOffset;
}

@end

@implementation TouchMoveGestureRecognizer

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch* t = [touches anyObject];
    _ptOffset = [t locationInView: self.view];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch* t = [touches anyObject];
    CGPoint pt = [t locationInView: self.view.superview];
    pt.x -= _ptOffset.x;
    pt.y -= _ptOffset.y;

    CGRect r = self.view.frame;
    r.origin = pt;
    self.view.frame = r;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    _ptOffset = CGPointMake(-1, -1);
}

@end

и, какиспользуйте это:

- (void)viewDidLoad {
    [super viewDidLoad];

    _textView.scrollEnabled = NO;

    TouchMoveGestureRecognizer* gr = [[[TouchMoveGestureRecognizer alloc] init] autorelease];
    [_textView addGestureRecognizer: gr];
}
0 голосов
/ 20 июля 2010

Ну, не удалось манипулировать фактическим uitextview.

Сначала попытался создать наложение кнопки, которое можно было бы переместить и нажать, чтобы начать редактирование, но оно было отцентрировано неправильно.

Затем попытался описанным выше способом переместить сам UITextView. Но это будет работать только на прикосновения или перетаскивания. (Обратите внимание, что это была измененная форма прикосновений Beg & touchesMoved)

Завершено UIScrollView с UITextView в качестве подпредставления. Теперь он может плавно двигаться, просто перемещаясь из любого места на экране. Не оптимально, но это лучший результат, чтобы сохранить все остальное нетронутым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...