gpt4 book ai didi

objective-c - 用于 KB 管理的 Objective C 单独类

转载 作者:行者123 更新时间:2023-11-29 11:18:12 24 4
gpt4 key购买 nike

我正在尝试创建一个通用类来管理我的键盘并向该键盘添加工具栏。我有几个将访问此类的 ViewController。这个类将有几个方法,其中之一是 addToolbar

让我们在这里做一个小例子:

当我的 MainViewController 加载时,它将调用 viewDidLoad。通常在 viewDidLoad 上,它必须创建一个新的工具栏,并通过调用 setInputAccessoryView: 将其添加到每个文本字段。我想做的只是调用一个单独的类(我们的键盘管理器),但该键盘管理器需要能够访问 MainViewController 的文本字段并能够调用 setInputAccessoryView 在他们身上。

这可能吗?如果是这样,我该如何开始使用它?

最佳答案

如何创建一个正式的protocolKeyboardToolbarClient 或其他东西,有一个必需的方法来公开所有应添加工具栏的界面项?该协议(protocol)还可以有相关的通知和发布该通知的方法;采用该协议(protocol)的 View Controller 会在它们出现时发布,让经理知道是时候采取行动了。

任何你想拥有这个功能的 View Controller 都会实现这个协议(protocol);当它出现时,您的键盘管理器对象向 View Controller 询问列表,并可以通过提供的指针做任何它需要的事情。

// KeyboardToolbarClient.h

@protocol KeyboardToolbarClient <NSObject>

- (NSArray *) interfaceItemsNeedingToolbar;

- (void) postDidAppearNotification;

@end

NSString * KTCViewControllerDidAppear = @"KTCViewControllerDidAppear";

每个 View Controller 采用KeyboardToolbarClient:

#import "KeyboardToolbarClient.h"

@interface MyViewController : UIViewController <KeyboardToolbarClient>

// etc.

@end

@implementation MyViewController

- (NSArray *) interfaceItemsNeedingToolbar {
return [NSArray arrayWithObjects: textField1, textField2,
textField3, nil];
}

- (void) postDidAppearNotification {

[[NSNotificationCenter defaultCenter] postNotificationName:KTCViewControllerDidAppear
object:self
userInfo:nil];
}

// etc.

这甚至可能过于复杂。根据您从 View Controller 访问键盘管理器的方式(假设管理器是单例?),您可以简单地在管理器上使用一个方法,将所有有趣的接口(interface)对象传递给该方法。

关于objective-c - 用于 KB 管理的 Objective C 单独类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480470/

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