gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 19:34:08 25 4
gpt4 key购买 nike

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

我的 View Controller 在屏幕上加载此自定义 View 。设置 View Controller 以监听自定义控件的值更改的最佳方法是什么?

最佳答案

你可以:

  1. 在 Controller 中实现委托(delegate)方法并从您的 View 中调用它们,或者
  2. 改为子类 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.

因此,UIViewUIControl 之间最重要的区别是是否传达了用户意图。 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com