objective c - Retrollamadas ¿Cuándo se desplaza un NSScrollView?
objective-c cocoa (4)
Actualización para swift 4:
scrollView.contentView.postsBoundsChangedNotifications
También la llamada es: NotificationCenter.default.addObserver (self, selector: #selector (boundsChange), nombre: NSView.boundsDidChangeNotification, object: self)
Editar: la colección en mac no hereda de la colección. actualizado correctamente
Estoy creando una aplicación Mac que necesita saber cuándo el usuario está desplazándose por NSScrollView
; sin embargo, no puedo encontrar ningún método como UIScrollView
, que tiene los siguientes métodos delegados:
– scrollViewDidScroll:
– scrollViewWillBeginDragging:
– scrollViewDidEndDragging:willDecelerate:
– scrollViewShouldScrollToTop:
– scrollViewDidScrollToTop:
– scrollViewWillBeginDecelerating:
– scrollViewDidEndDecelerating:
¿Puedo tener los métodos delegados similares para el Kit de aplicaciones? Gracias por adelantado.
Kai.
Agregando a @Sean Rich respuesta.
contentView
es NSClipView
entre NSScrollView
y NSCollectionView
.
Para que esto funcione, tanto ClipView
debe configurar como postsBoundsChangedNotifications
y se debe pasar en el objeto de notificación.
self.clipView.postsBoundsChangedNotifications = true
NotificationCenter.default.addObserver(self,
selector: #selector(collectionViewDidScroll(notification:)),
name: NSView.boundsDidChangeNotification,
object: self.clipView)
Puede supervisar los cambios de una vista de desplazamiento controlando los límites de su vista de contenido. Primero configure la vista de contenido para publicar sus cambios con
[contentView setPostsBoundsChangedNotifications:YES];
Luego regístrese como observador de esas notificaciones con
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boundsDidChange:) name:NSViewBoundsDidChangeNotification object:contentView];
Tuvo el mismo problema recientemente ... Para emular en cierto modo devoluciones de llamada de desaceleración, es posible anular
-(void) scrollWheel:(NSEvent *)theEvent
de la clase NSScrollView, pero luego revisa theEvent.momentumPhase en lugar de theEvent.phase para las fases del evento.