覆盖 IOS UIButton buttonPressed

Posted

技术标签:

【中文标题】覆盖 IOS UIButton buttonPressed【英文标题】:Overriding IOS UIButton buttonPressed 【发布时间】:2013-09-11 06:59:24 【问题描述】:

我有一个来自 viewDidLoad 的 ViewController.m 文件:

_registerButton = [AuthButton buttonWithType:UIButtonTypeSystem];
[_registerButton setTitle:@"Register" forState:UIControlStateNormal];
_registerButton.frame = CGRectMake(0.0, 0.0, self.screenWidth / 2.0 - 1.0, 60.0);

[_registerButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];

...

 (IBAction)buttonPressed:(UIButton *)sender

    //sentder.titleLabel
    [sender setTitle:@"Registers" forState:UIControlStateNormal];
 

registerButton 是通过属性声明的 AuthButton。如何覆盖 buttonPressed 并将我的 IBAction 代码移动到我的 AuthButton.m 类?对语法感到困惑(objective-c 的新手)。

【问题讨论】:

为此,您必须使用协议。 检查这个:- iosdevelopertips.com/objective-c/… 为什么不将目标声明为您的 AuthButton? smth like: [_registerButton addTarget:_registerButton action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 你的意思是在视图控制器中?我试图让它更 oo 我的意思是你根本不需要 IBAction。 “addTarget:object”对象有一个类将负责处理按钮按下事件。只需设置您需要的目标并在那里实现“buttonPressed”方法。 【参考方案1】:

addTarget 属性是您所需要的。在您的示例中,目标是 self,因此按钮按下事件会在当前对象中查找选择器。

如果你把目标改成AuthButton的实例,在AuthButton.m写一个对应的选择器就可以了。

【讨论】:

以上是关于覆盖 IOS UIButton buttonPressed的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖 Xamarin.IOS UIButton 的 LayoutSublayersOfLayer 行为?

覆盖 IOS UIButton buttonPressed

在 iOS 中的 UIButton 上方创建叠加层?

当我覆盖“drawRect”时,UIButton 样式设置被忽略

iOS 增加 UITableViewCell 中 UIButton 的触控区域

iOS - UIButton 不会出现在 UIView 上