首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让UIButton调用目标类并挂接此方法?(使用theos编译越狱调整)

如何让UIButton调用目标类并挂接此方法?(使用theos编译越狱调整)
EN

Stack Overflow用户
提问于 2014-09-10 15:01:05
回答 2查看 1.2K关注 0票数 1

我正在尝试将UIButton放入iPhones MobileSMS.app (消息应用程序)中。它成功地出现在视图中,但当您按下它时,它当然会崩溃,因为它没有调用任何目标类和挂钩方法。我想挂接的目标类和方法在下面的第二段代码中,我如何实现在按钮被按下时调用它?(我的主要目标是在对话视图中放置一个按钮,当它被点击时,它将强制短信,而不是自动使用iMessage。)

代码语言:javascript
复制
#import <UIKit/UIKit.h>
#import <ChatKit/ChatKit.h>

@interface CKTranscriptCollectionViewController : UIViewController
@end

%hook CKTranscriptCollectionViewController
-(void)loadView {
   %orig;
   UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
   [button setTitle:@"SMS" forState:UIControlStateNormal]; 
   button.frame = CGRectMake(0, 0, 50, 100);
   [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:button]; 
}

-(void)buttonPressed {
    NSLog(@"Button Pressed!");
}

%end

点击按钮时我想调用的类和方法(属于标题"ChatKit/CKConversation.h"):

代码语言:javascript
复制
%hook CKConversation
-(BOOL)forceMMS {

    return TRUE;

}
%end
EN

回答 2

Stack Overflow用户

发布于 2014-09-10 15:29:30

它崩溃是因为它探测到了一个参数。尝试将方法定义更改为:

代码语言:javascript
复制
-(void)buttonPressed:(id)sender 

或将目标更改为:

代码语言:javascript
复制
[button addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
票数 2
EN

Stack Overflow用户

发布于 2014-09-12 05:24:32

使用徽标定义您必须编写的新操作/方法的Opsss

此操作或方法之前的%new

我建议您创建一个私有类来使用这样的操作

代码语言:javascript
复制
[self buttonPressed];

私有类应该如下所示

代码语言:javascript
复制
@interface CKTranscriptCollectionViewController (TWEAKNAME)
-(void)buttonPressed;
@end

因此,您的代码应该如下所示

代码语言:javascript
复制
#import <UIKit/UIKit.h>
#import <ChatKit/ChatKit.h>

@interface CKTranscriptCollectionViewController : UIViewController
@end

@interface CKTranscriptCollectionViewController (TWEAKNAME)
-(void)buttonPressed;
@end

%hook CKTranscriptCollectionViewController
-(void)loadView {
   %orig;
   UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
   [button setTitle:@"SMS" forState:UIControlStateNormal]; 
   button.frame = CGRectMake(0, 0, 50, 100);
   [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:button]; 
}

%new
-(void)buttonPressed {
    NSLog(@"Button Pressed!");
}

%end

GoodLuck

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25759174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档