iOS
ComPDFKit PDF SDK
Guides

 

Customize the Menu of Text Editing

 

When you enter the editing mode, the PDF document will also enter the corresponding interaction status based on different operations. In different interaction statuses, a context menu like UIMenuController pops up, and the context menu calls back to different interfaces with different operation classes. Here are the different interaction statuses:

 

ComPDFKit provides default menu options for copying, cutting, deleting, pasting, etc.

 

- (NSArray<UIMenuItem *> *)menuItemsEditingAtPoint:(CGPoint)point forPage:(CPDFPage *)page {
   NSArray * items = [super menuItemsEditingAtPoint:point forPage:page];
   NSMutableArray *menuItems = [NSMutableArray array];
   if (items)
      [menuItems addObjectsFromArray:items];
   
   self.menuPoint = point;
   self.menuPage = page;
   
   if(CEditingSelectStateEmpty == self.editStatus) {
       UIMenuItem *addTextItem = [[[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Add Text", nil)
                                                             action:@selector(addTextEditingItemAction:)] autorelease];
       UIMenuItem *addImageItem = [[[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Add Image", nil)
                                                              action:@selector(addImageEditingItemAction:)] autorelease];
      [menuItems addObject:addImageItem];
      [menuItems addObject:addTextItem];
       
  }
   
   return menuItems;
}

 

When selecting a text block or a certain area, you can use editStatus: of CPDFView to get the current text-editing status. Here are the introductions to each status.

 

CEditingSelectStateEmpty does not enter the text-editing status.

CEditingSelectStateEditTextArea selects a text block without entering the text-editing status.

CEditingSelectStateEditNoneText enters the text-editing status without selecting text.

CEditingSelectStateEditSelectText enters the text-editing status and selects text.