当前位置:  开发笔记 > IOS > 正文

如何在UIKIt中构建自定义控件?

如何解决《如何在UIKIt中构建自定义控件?》经验,为你挑选了1个好方法。

我的UIView的子类处理触摸事件并在触摸开始和跟踪发生时更新内部值.

我的视图控制器在屏幕上加载此自定义视图.设置我的视图控制器以监听自定义控件的值更改的最佳方法是什么?



1> Can Berk Güd..:

您可以:

    在您的控制器中实现委托方法,并从您的视图中调用它们,或

    UIControl改为子类并将UIControlEvents 发送给您的控制器

当值改变时(或者更确切地说当用户与您的控件交互时).

如果您的视图用于从用户那里获得某种形式的输入,那么子类化UIControl是一种更好的方法.

来自iPhone参考库:

UIControl 是控件的基类:按钮和滑块等对象,用于将用户意图传达给应用程序.

所以之间最重要的区别UIView,并UIControl为用户意图是否传送与否.UIView用于显示信息,同时UIControl用于收集用户输入.

更新:

如果您决定使用委托模式,那么代码的外观如下:

在自定义视图的界面中,像这样定义委托:

@interface MyView : UIView {
    id delegate;
}
@property (assign) id delegate;
@end

并且@synthesize它在执行.

在视图控制器中,将控制器设置为委托:

MyView myView = [[MyView alloc] init];
[myView setDelegate:self];

然后,只要用户与视图交互(例如,在touchesBegan),可能更改值,请在视图中执行以下操作:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // Possibly change the values
    if([delegate respondsToSelector:@selector(valuesChanged)]) {
        [delegate valuesChanged];
    }
}

您可能还想查看Cocoa基础指南中的代理和数据源.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有