다음은 서브 클래 싱을 포함하지 않는 Obj-C에서 수행하는 방법입니다. IB에 SplitView 대리자가 연결되어 있는지 확인하십시오. 대리자 클래스 다음
:
-(NSRect)splitView:(NSSplitView *)splitView effectiveRect:(NSRect)proposedEffectiveRect forDrawnRect:(NSRect)drawnRect ofDividerAtIndex:(NSInteger)dividerIndex
{
if ([_splitView subviews][1].isHidden ==YES || [[_splitView subviews][1] frame].size.height < 50) //closed or almost closed
{
return NSZeroRect;
}
return proposedEffectiveRect;
}
- (BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex
{
if ([_splitView subviews][1].isHidden ==YES || [[_splitView subviews][1] frame].size.height < 50)
{
return YES;
}
return NO;
}
이 분할보기가 닫혀 디바이더를 숨길 수 있지만,이 열려있을 때를 표시합니다.
열려 있어도 드래그 할 수 없도록하려면 첫 번째 메서드에서 모든 코드를 잘라내어 NSZeroRect 만 반환하면됩니다. 두 번째 방법에서 동일한 작업을 수행하고 YES 만 반환하십시오.
splitView : shouldHideDividorAtIndex : does not collapsed 뷰의 분할자를 숨기지 않습니다. – carmin