如何区分 cocoa 应用程序中的标签和文本字段?
How to distinguish between a label and a textfield in cocoa application?
我想在我的视图中收集所有文本字段:
for ( NSView* view in [self.view subviews])
{
if ([view isKindOfClass:[NSTextField class]]){
[self.allTxtFields addObject:view];
}
}
问题是,Labels 也碰巧是 NSTextField!
如何区分文本字段和标签?
改为使用 isMemberOfClass
for ( NSView* view in [self.view subviews])
{
if ([view isMemberOfClass:[NSTextField class]]){
[self.allTxtFields addObject:view];
}
}
是的,界面生成器中的"labels"只是NSTextField
一些特殊的默认配置,例如:
editable
= NO
selectable
= NO
bordered
= NO
drawsBackground
= NO
- 水平拥抱优先级为
251
而不是250
您可以选择任何上述属性来区分标签与传统的 NSTextField
s,只要它是 unqiue 在您的情况下。
最终我按照标签号进行了检查:我给了所有 TextFields 编号在 100 到 200 之间,然后检查 -
if ([view isMemberOfClass:[NSTextField class]] && [view tag] >=100 && [view tag] <200){
if ([view isAccessibilityEnabled]){
NSTextField* tfView = (NSTextField*)view;
[self.allTxtFields addObject:tfView];
}
}
不是最优雅的,但它可以在不担心属性更改的情况下工作...
我想在我的视图中收集所有文本字段:
for ( NSView* view in [self.view subviews])
{
if ([view isKindOfClass:[NSTextField class]]){
[self.allTxtFields addObject:view];
}
}
问题是,Labels 也碰巧是 NSTextField!
如何区分文本字段和标签?
改为使用 isMemberOfClass
for ( NSView* view in [self.view subviews])
{
if ([view isMemberOfClass:[NSTextField class]]){
[self.allTxtFields addObject:view];
}
}
是的,界面生成器中的"labels"只是NSTextField
一些特殊的默认配置,例如:
editable
=NO
selectable
=NO
bordered
=NO
drawsBackground
=NO
- 水平拥抱优先级为
251
而不是250
您可以选择任何上述属性来区分标签与传统的 NSTextField
s,只要它是 unqiue 在您的情况下。
最终我按照标签号进行了检查:我给了所有 TextFields 编号在 100 到 200 之间,然后检查 -
if ([view isMemberOfClass:[NSTextField class]] && [view tag] >=100 && [view tag] <200){
if ([view isAccessibilityEnabled]){
NSTextField* tfView = (NSTextField*)view;
[self.allTxtFields addObject:tfView];
}
}
不是最优雅的,但它可以在不担心属性更改的情况下工作...