NSTextView放在NSScrollView上,当鼠标悬停在NSTextView上滚动鼠标滚轮时会发现NSScrollView并不会滚动,事件被NSTextView所拦截,只要重写scrollWheel方法就可以
1.自定义一个scrollview
2.重写scrollWheel方法
- (void)scrollWheel:(NSEvent *)event {
if ([self.subviews[0].subviews[2] isKindOfClass:[NSTextView class]]) {
NSTextView *tempView = self.subviews[0].subviews[2];
if (tempView.string.length == 0) {
[[self nextResponder] scrollWheel:event];
}
}else if (self.verticalScroller.floatValue == 1){
if (event.deltaY < 0) {
[[self nextResponder] scrollWheel:event];
}else{
[super scrollWheel:event];
}
}
if (self.verticalScroller.floatValue == 0) {
if (event.deltaY > 0) {
[[self nextResponder] scrollWheel:event];
}else{
[super scrollWheel:event];
}
}
[super scrollWheel:event];
}