¿Alguien me puede decir cómo quitar el botón de impresión QLPreviewController? También me gustaría desactivar cortar/pegar/copiar.Cómo deshabilitar el botón de impresión QLPreviewController
Respuesta
ACTUALIZACIÓN:
Esto ya no funciona en iOS 6. Quick Look ejecuta en otro proceso utilizando XPC. Ver [aquí] [3] para más detalles. No preveo ninguna forma de personalizar QLPreviewController. La siguiente respuesta sigue siendo para cualquier persona interesada para pre-IOS 6.
Si desea eliminar simplemente el botón de acción que debe subclase QLPreviewController
. Luego, en -viewWillAppear:
, debe quitar el botón de acción llamando al [[self navigationItem] setRightBarButtonItem:nil];
Esto también eliminará la posibilidad de compartir archivos con otras aplicaciones. Si estás bien con esa pérdida, entonces esa es la solución más fácil. Una cosa a tener en cuenta es que QLPreviewController
NO está destinado a ser personalizado. Puede consultar este repository en Github. Contiene un QLPreviewController que ya está subclasificado de forma segura. Solo necesita agregar una línea para eliminar el botón de acción. El repositorio también tiene otras comodidades.
La mejor solución pero más complicada es usar UIDocumentInteractionController
. Por lo que entiendo de QLPreviewController
es que está construido usando UIDocumentInteractionController
. QLPreviewController
fue hecho para uso general y fácil adición. UIDocumentInteractionController
da mucho más control, pero es más difícil de usar. No puedo describir suficientemente cómo usarlo aquí. Recomiendo ver la sesión de WWDC 2010 106 Comprender el controlador de interacción de documentos.
En cuanto a deshabilitar cortar/copiar/pegar, no puede hacer eso con QLPreviewController
. Es posible que pueda hacer eso con UIDocumentInteractionController
, pero no contaría con eso. Dependiendo de qué archivos desee visualizar, es posible que pueda realizar una implementación completamente personalizada, pero eso es mucho trabajo. Es relativamente fácil hacer que los espectadores encuentren texto sin formato, fotos, videos y archivos PDF. Los documentos de Office cuestan más de lo que vale.
EDIT:
he construido la capacidad de eliminar el botón de acción derecha en RBFilePreviewer
por lo que no tiene que preocuparse de hacerlo usted mismo.
Gracias. Solo funcionaba cuando establecíRightBarButtonItem: nil en "viewDidAppear" –
-viewDidAppear es un lugar extraño para poner eso. ¿Funciona en -viewWillAppear? Eso sería mucho mejor si es posible. Además, ¿vas a votar/aceptar mi respuesta como correcta? – rbrown
Resulta que quitar el botón de acción no es tan trivial como pensaba. QLPreviewController tiene muchas peculiaridades debajo. RBFilePreviewer ahora tiene esa característica incorporada y se ocupa de todos los casos diferentes. Además, arreglé un "error" en el QLPreviewController original que hace que no se muestre la barra de navegación del documento cuando se lo empuja en lugar de presentarlo de manera modal. También puede ver una demostración de RBFilePreviewer en mi repositorio de demostración: https://github.com/rob-brown/Demos. – rbrown
Si subclase QLPreviewController
y luego agrega éste método:
-(void)viewDidAppear:(BOOL)animated{
[[self navigationItem] setRightBarButtonItem:nil];
}
en la subclase, el botón de acción desaparecerá notas como rbrown anteriormente. Esto no funcionará si usa viewWillAppear
. Además, un efecto secundario inesperado de hacer esto es que la barra de herramientas en la vista previa ahora aparece en todo momento, en lugar de solo cuando toca la vista.
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self navigationItem].rightBarButtonItems = nil;
}
funciona para mí en lugar de [[self navigationItem] setRightBarButtonItem:nil];
También funciona para mí pero las flechas next y prev desaparecen curiosamente dejando dos botón negro vacío –
también necesito costumbre el elemento navigaiton de QLPreviewController
. Al igual que rbrown, se dice que se usa XPC y ya no podemos agregar artículos personalizados en viewDidLoad
o viewWillAppear
.
Actualmente uso de esta manera:
- crear una nueva clase de
UIViewController
- agregar la vista de
QLPreviewController
a la nueva clase
Parece cableadas no funciona.
puedo solucionar este problema de esta manera:
UIView *viewPreviewController; //from storyboard
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.delegate = self;
previewController.dataSource = self;
previewController.currentPreviewItemIndex = 0;
[previewController.view setFrame:CGRectMake(0,0, self.viewPreviewController.frame.size.width, self.viewPreviewController.frame.size.height)];
[previewController.navigationController setHidesBarsOnTap:YES];
previewController.navigationItem.rightBarButtonItems = nil;
[self.viewPreviewController addSubview:previewController.view];
si no hubiera incorporar el previewController en un UIView, entonces sería no funciona!
He encontrado una solución para desactivar el rightBarButtonItem
en QLPreviewController
que funciona muy bien para mí en iOS8 y iOS9
Simplemente necesita subclase QLPreviewController
y anular los métodos siguientes, a continuación, utilizar la subclase en lugar del original QLPreviewController
- (void)viewDidLoad {
[super viewDidLoad];
// When coming back from background we make sure the share button on the rightbBarButtonItem is disabled
__weak typeof(self) weakSelf = self;
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
weakSelf.navigationItem.rightBarButtonItem.enabled = NO;
}];
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationItem.rightBarButtonItem.enabled = NO; // Disable the share button
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.navigationItem.rightBarButtonItem.enabled = NO; // Disable the share button
}
- 1. Deshabilitar el botón "imprimir" en el cuadro de diálogo de vista previa de impresión.
- 2. ¿Cómo deshabilitar completamente el botón de enlace?
- 3. ¿Cómo deshabilitar el botón en UIActionSheet?
- 4. Cómo deshabilitar el botón minimizar en C#?
- 5. Botón CustomItem de navegación con QLPreviewController en iOS6
- 6. ASP.NET ¿Cómo deshabilitar el botón al enviar?
- 7. Cómo deshabilitar el botón, haga clic en?
- 8. Deshabilitar el botón Atrás en el navegador
- 9. Botón Deshabilitar en WPF?
- 10. Datagridview, deshabilitar botón/fila
- 11. UIDocumentInteractionController vs QLPreviewController en iOS
- 12. cómo deshabilitar botón de enviar con jQuery
- 13. Cómo deshabilitar un botón de Android?
- 14. Cómo deshabilitar el botón derecho de la barra de navegación
- 15. Botón Deshabilitar en el envío del formulario
- 16. QLPreviewController con NSData?
- 17. Cómo deshabilitar el botón Ir en el teclado del iPhone
- 18. ¿Cómo deshabilitar el botón Maximizar en el programa Delphi?
- 19. ¿Cómo deshabilitar el botón de inicio sin usar TYPE_KEYGUARD?
- 20. ¿Cómo deshabilitar el botón de cerrar en C?
- 21. aplicación se bloquea en iPhone- clic del botón de acción de menú en QLPreviewController IOS 4.2
- 22. Cómo deshabilitar un botón más elegante
- 23. Cómo deshabilitar el botón "Siguiente" en un teclado de software EditText (reemplace con el botón "Hecho")
- 24. cómo deshabilitar/habilitar un botón por jquery
- 25. Cómo deshabilitar el botón html usando las etiquetas JSTL
- 26. Deshabilitar el botón de barra de navegación Navigationitem
- 27. Deshabilitar la impresión de la consola en Log4js
- 28. botón de deshabilitar con fondo personalizado android
- 29. Cómo agregar QLPreviewController como subvista en el objetivo C
- 30. ¿Puedo deshabilitar el botón 'cerrar' de un formulario usando C#?
para una solución para iOS6, mira aquí: http://stackoverflow.com/questions/13083546/qlpreviewcontroller-hide-print-button-in-ios6 – Krumelur
funcionan bien para mí usando Xcode 8.3 https: // stackoverflow .com/a/45344701/1603380 – Buntylm