Iphone 我可以使用静态IBAction方法进行事件连接吗?
我正在开发一个多视图iPhone应用程序,它在不同的屏幕上有很多输入,而不必用某种只发送辞职FirstResponder消息的方法到处重复我自己,我想我会在我的根控制器类中创建一个静态方法,并用一个函数解决我所有辞职的FirstReporter需求。可能吗?我似乎无法将root controller.h文件拖到Interface builder中,如果我尝试将该类放到其中,则无法将任何事件与之挂钩。有没有一种方法可以将事件连接到静态的iAction方法 编辑:Iphone 我可以使用静态IBAction方法进行事件连接吗?,iphone,objective-c,cocoa,Iphone,Objective C,Cocoa,我正在开发一个多视图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,辞去第一响应者
地位子类可以覆盖这个
方法更新状态或执行某些操作
操作,例如取消高亮显示
选择,或返回否,拒绝
放弃第一响应者状态
使用NSWindowMakeffirstResponder:
方法,而不是此方法,来生成
向第一个响应者发送对象。从未
直接调用此方法。
不确定是否有一款iPhone相当于makeFirstResponder:
,但这正是你应该努力追求的(你积极地将新视图打造成第一响应者)。虽然这非常棒,我肯定会用它做其他事情,但我认为这让我在这种情况下要做的事情更加复杂。我认为我的问题不清楚,补充了更多信息。谢谢你提供的这些信息,这将是非常有价值的!