pep*_*psi 9 macos user-interface cocoa objective-c
在OS X应用程序中,我在滚动视图中都有各种文本字段,按钮和其他控件.有没有办法一次性禁用滚动视图中的元素?
我想避免调用setEnabled:每个项目,如果我想稍后在滚动视图中添加更多控件,那么维护会更容易.
我想强调的是,这适用于OS X应用程序,因此在iOS中运行的技术不一定适用于此处.
您可以使用绑定轻松完成此类任务.您必须在XIB中有一个控制器类的实例用于以下步骤,但该技术不需要这样 - 如果您愿意,可以以编程方式进行设置.
BOOL比如,向控制器类添加属性scrollItemsEnabled Enabled到scrollItemsEnabled控制器类实例的属性的绑定为了记录,这里是我在Cocoa应用程序中使用的NSView类别:https:
//github.com/ardalahmet/DisableSubviews
它可以轻松地立即启用/禁用子视图,并且还提供了很大的灵活性.
你可以打这样的电话:
[scrollView disableSubviews:YES];
[self.window.contentView disableSubviews:YES
                                  ofType:[NSTextField class]];
[someView disableSubviews:YES
                   filter:^BOOL (NSView *v) {
                       return [v isKindOfClass:[NSTextField class]] &&
                              (((NSTextField *) v).stringValue.length < 1);
                   }];
[otherView disableSubviews:disable
                  startTag:3
                    endTag:7];
希望能帮助到你.
您可以迭代所有subviews内容视图,并调用setEnabled:所有内容视图。这可能会通过禁用某些内部视图来破坏滚动视图,因此不要迭代subview滚动视图本身的属性。要防止调用setEnabled:没有启用属性的视图,请使用respondsToSelector:@selector(setEnabled:)to check。
| 归档时间: | 
 | 
| 查看次数: | 8810 次 | 
| 最近记录: |