2016-04-06 21 views
0

Ich benutze eine Nib/Xib und möchte identifizieren, ob ein bestimmtes NSTextfield einen Rahmen gesetzt hat.NSTextfield isBordered Eigenschaft wird zurückgesetzt

NSArray *objects = [NSArray array]; 

[[NSBundle mainBundle] loadNibNamed:nibName owner:nil topLevelObjects:&objects]; 
for (NSObject *obj in objects) 
{ 
    if ([obj isKindOfClass:[NSView class]]) 
    { 
     mainView = (NSView *)obj; 
     break; 
    } 
} 

for (NSView *view in [mainView subviews]) 
{ 
    if([view isKindOfClass:[NSTextField class]]) 
    { 
     NSTextField *label = (NSTextField*)view; 
     NSLog(@"view is bordered: %d", label.isBordered); 
    } 
} 

Die Textfelder richtig begrenzt oder nicht in IB gezeigt, aber wenn der obige Code ausgeführt wird, meldet es immer falsch grenzte für unabhängig davon, ob sie begrenzt ist oder nicht. Ich habe versucht, NSControl anstelle von NSView in der for-Schleife zu verwenden, aber das macht keinen Unterschied.

Wie kann ich den Status 'isBordered' korrekt identifizieren? Vielen Dank.

Antwort

0
label.bezeled 
label.bezelStyle 

NSTextFieldSquareBezel = 0, 
NSTextFieldRoundedBezel = 1 

UPDATE: NSTextField hat 4 borderStyle

  1. isBordered = NO; isBezeled = JA; BezelStyle = 0;
  2. isBordered = NEIN; isBezeled = NEIN; BezelStyle = 0;
  3. isBordered = YES; isBezeled = NEIN; BezelStyle = 0;
  4. isBordered = NEIN; isBezeled = JA; BezelStyle = 1;

Informationen dazu finden here

+0

Hallo, Danke für die Anregung zu finden. Ich schaute auf diese. Bezeled ist auch immer falsch. BezelStyle kann auch dann nicht Null sein, wenn das Textfeld keinen Rahmen hat. – Nick

+0

@Nick siehe Updates als Antwort :) –

+0

Ah, ich bekam meine Bezel und Grenzen durcheinander! Danke, Vladimir Prigarin. – Nick