This repository has been archived by the owner on Aug 25, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
ContextualMenu
imchristian_g edited this page Mar 20, 2018
·
1 revision
Menú que se despliega al hacer long press mostrando distintos circulos para cada opción rodeando la posición en la que se hizo el long press.
Primero instanciamos el MLContextualMenu y asignamos los datasources y delegates.
MLContextualMenu *contextualMenu = [[MLContextualMenu alloc] init];
contextualMenu.dataSource = self;
contextualMenu.delegate = self;
Luego tomamos el gesturerecognizer y lo asignamos a la vista que lo va a contener, de esa forma se mantiene en memoria con la misma vista.
UILongPressGestureRecognizer *gestureRecognizer = [contextualMenu gestureRecognizerWithDelegate:self];
[self.collectionView addGestureRecognizer:gestureRecognizer];
Para no interferir con el scrolling agregamos la siguiente función.
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
BOOL isScrolling = self.collectionView.isDragging || self.collectionView.isDecelerating;
return !([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]] && isScrolling);
}
Devuelve un array con los items que se van a mostrar (de tipo MLContextualMenuItem).
- (NSArray<MLContextualMenuItem *> *)contextualMenu:(MLContextualMenu *)contextualMenu itemsAtPoint:(CGPoint)point;
Devuelve si se debe mostrar o no el ContextualMenu.
- (BOOL)contextualMenu:(MLContextualMenu *)contextualMenu shouldShowMenuAtPoint:(CGPoint)point;
Acción a realizar cuando se selecciona un item del ContextualMenu.
- (void)contextualMenu:(MLContextualMenu *)contextualMenu didSelectItemAtIndex:(NSInteger)selectedIndex atPoint:(CGPoint)point;