Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 我可以使用静态IBAction方法进行事件连接吗?_Iphone_Objective C_Cocoa - Fatal编程技术网

Iphone 我可以使用静态IBAction方法进行事件连接吗?

Iphone 我可以使用静态IBAction方法进行事件连接吗?,iphone,objective-c,cocoa,Iphone,Objective C,Cocoa,我正在开发一个多视图iPhone应用程序,它在不同的屏幕上有很多输入,而不必用某种只发送辞职FirstResponder消息的方法到处重复我自己,我想我会在我的根控制器类中创建一个静态方法,并用一个函数解决我所有辞职的FirstReporter需求。可能吗?我似乎无法将root controller.h文件拖到Interface builder中,如果我尝试将该类放到其中,则无法将任何事件与之挂钩。有没有一种方法可以将事件连接到静态的iAction方法 编辑: 我应该更清楚地知道我在努力完成什么

我正在开发一个多视图iPhone应用程序,它在不同的屏幕上有很多输入,而不必用某种只发送辞职FirstResponder消息的方法到处重复我自己,我想我会在我的根控制器类中创建一个静态方法,并用一个函数解决我所有辞职的FirstReporter需求。可能吗?我似乎无法将root controller.h文件拖到Interface builder中,如果我尝试将该类放到其中,则无法将任何事件与之挂钩。有没有一种方法可以将事件连接到静态的iAction方法

编辑:


我应该更清楚地知道我在努力完成什么。基本上,我在文本字段的“Did End On Exit”事件中调用resignFirstResponder来摆脱键盘。(这是正确的方法吗?我是iPhone新手)因为我将在不同的视图上到处使用它,我不想为每个视图编写相同的函数。我想在我的根控制器中有一个
+(void)resignsomekeyboard或类似于
的函数,我可以从每个视图钩住我的“退出时结束”事件。有办法吗?很抱歉第一次说得含糊不清。

让我看看我是否理解这一点,你有一个多屏幕的应用程序,可以做各种事情,你想让这些事情触发一个功能,对吗

在我看来,通知对你来说很有效

假设您在根视图控制器中定义了一个函数resignMyResponder。只需在初始化函数中将以下内容添加到根视图控制器文件中:

[[NSNotificationCenter defaultCenter] 
 addObserver:self 
 selector:@selector(resignMyResponder:) 
 name:@"resignThis" 
 object:nil];
然后,在您的其他屏幕/文件中,只要您想辞去MyResponder的职务,只需执行以下操作:

[[NSNotificationCenter defaultCenter] 
 postNotificationName:@"resignThis" object:nil];
resignMyResponder可能需要相当复杂才能处理可能被调用的所有不同情况,但这取决于应用程序的实现。

不幸的是,这一点不如nsrresponder清楚

辞职第一响应者

通知 它被要求 放弃其第一位的地位 窗口中的响应程序

-(BOOL)辞职第一响应者

讨论

默认实现 返回YES,辞去第一响应者 地位子类可以覆盖这个 方法更新状态或执行某些操作 操作,例如取消高亮显示 选择,或返回否,拒绝 放弃第一响应者状态

如果我们将一个类的实例方法分为两类(抱歉,太晚了,可能这过于简单了,但是…):

1) 用于直接从其他对象调用以检索某些数据或执行操作的方法<代码>[查看设置需要显示:是]

2) 拟由(具体)子类重写的方法。您通常从不在代码中自己调用这些方法;相反,Cocoa代表您调用它们,目的是让您重写它们以执行自定义实现。Cocoa调用
-(void)drawRect:(NSRect)帧为您准备。在抽象类中尤其如此,如
UIResponder
nsrresponder

-(BOOL)辞职第一响应者属于后者:这种方法本质上是问你“你想辞职第一响应者吗?”。您回答是或否。它会根据需要自动调用。你不需要直接打电话

文件更加清晰:

辞职第一响应者

通知 它被要求的接收器 放弃其第一位的地位 窗口中的响应程序

-(BOOL)辞职第一响应者

讨论

默认实现 返回YES,辞去第一响应者 地位子类可以覆盖这个 方法更新状态或执行某些操作 操作,例如取消高亮显示 选择,或返回否,拒绝 放弃第一响应者状态

使用NSWindow
MakeffirstResponder:
方法,而不是此方法,来生成 向第一个响应者发送对象。从未 直接调用此方法。


不确定是否有一款iPhone相当于
makeFirstResponder:
,但这正是你应该努力追求的(你积极地将新视图打造成第一响应者)。

虽然这非常棒,我肯定会用它做其他事情,但我认为这让我在这种情况下要做的事情更加复杂。我认为我的问题不清楚,补充了更多信息。谢谢你提供的这些信息,这将是非常有价值的!