- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 UIView 子类处理触摸事件并在触摸开始和跟踪发生时更新内部值。
我的 View Controller 在屏幕上加载此自定义 View 。设置 View Controller 以监听自定义控件的值更改的最佳方法是什么?
最佳答案
你可以:
UIControl
并将 UIControlEvent
发送到您的 Controller 当值发生变化时(或者更确切地说,当用户与您的控件交互时)。
如果您的 View 用于从用户获取某种形式的输入,那么子类化 UIControl
是更好的方法。
来自 iPhone 引用库:
UIControl
is the base class for controls: objects such as buttons and sliders that are used to convey user intent to the application.
因此,UIView
和 UIControl
之间最重要的区别是是否传达了用户意图。 UIView
用于显示信息,而 UIControl
用于收集用户输入。
更新:
如果您决定使用委托(delegate)模式,您的代码可能如下所示:
在自定义 View 的界面中,定义委托(delegate)如下:
@interface MyView : UIView {
id delegate;
}
@property (assign) id delegate;
@end
和@synthesize
它在实现中。
在您的 View Controller 中,将 Controller 设置为委托(delegate):
MyView myView = [[MyView alloc] init];
[myView setDelegate:self];
然后,每当用户与 View 交互时(例如在 touchesBegan
中),可能会更改值,请在 View 中执行此操作:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// Possibly change the values
if([delegate respondsToSelector:@selector(valuesChanged)]) {
[delegate valuesChanged];
}
}
您可能还想查看Delegates and Data Sources在《Cocoa 基础指南》中。
关于iphone - 如何在 UIKIt 中构建自定义控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718308/
我是一名优秀的程序员,十分优秀!