PDFTron изменить направление стрелки аннотации iOS - PullRequest
1 голос
/ 14 октября 2019

Класс PTArrowCreate по умолчанию рисует стрелки, указывающие на первоначальное нажатие пользователя на экран. Я хочу, чтобы стрелки указывали на то место, где пользователь закончил перетаскивать палец.

Пожалуйста, дайте мне подсказку, как мне этого добиться.

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

В настоящее время нет встроенной опции для этого, но вы можете реализовать это с помощью подклассов. Аннотации со стрелками создаются с помощью инструмента PTAnnotCreate, который можно создать в подклассе путем регистрации подкласса до создания PTDocumentViewController:

[PTOverrides overrideClass:[PTArrowCreate class] withClass:[FWArrowCreate class]];

Затем поменяйте местами хвостовую часть стрелки в подклассе какследует:

@interface FWArrowCreate : PTArrowCreate

@end

@implementation FWArrowCreate

-(void)swapStartAndEndPoints
{
    CGPoint savedStartPoint = self.startPoint;
    self.startPoint = self.endPoint;
    self.endPoint = savedStartPoint;
}

-(void)drawRect:(CGRect)rect
{
    [self swapStartAndEndPoints];
    [super drawRect:rect];
    [self swapStartAndEndPoints];
}

- (BOOL)pdfViewCtrl:(PTPDFViewCtrl*)pdfViewCtrl onTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self swapStartAndEndPoints];

    BOOL result = [super pdfViewCtrl:pdfViewCtrl onTouchesEnded:touches withEvent:event];

    [self swapStartAndEndPoints];

    return result;
}

@end
0 голосов
/ 22 октября 2019

Тот же ответ в Swift:

class MyArrowCreate: PTArrowCreate {
  override func draw(_ rect: CGRect) {
    swapPoints()
    super.draw(rect)
    swapPoints()
  }

  override func pdfViewCtrl(_ pdfViewCtrl: PTPDFViewCtrl, onTouchesEnded touches: Set<UITouch>, with event: UIEvent?) -> Bool {
    swapPoints()
    let result = super.pdfViewCtrl(pdfViewCtrl, onTouchesEnded: touches, with: event)
    swapPoints()
    return result
  }

  private func swapPoints() {
    let tmpPoint = startPoint
    startPoint = endPoint
    endPoint = tmpPoint
  }
}
...