无法通过theos挂钩UITextfield类

时间:2012-10-15 09:14:05

标签: uitextfield uitextview jailbreak cydia tweak

我想开发简单的调整来挂钩uitextfield或uitextview。我的代码如下

%hook UITextView

-(id)initWithFrame:(CGRect)frame webView:(id)view
{
    UIAlertView *keyAlert = [[UIAlertView alloc] initWithTitle:@"testApp" message:@"Test" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [keyAlert show];
    [keyAlert release];

    return %orig;
}
%end

它的执行成功,但我无法获得任何输出。请检查这个调整并帮助我,如果我的方向不对,请建议我。

感谢。

1 个答案:

答案 0 :(得分:2)

这里有两件事你可能做错了:

1)UITextView不一定在init上调用该方法;它可能在呼唤 -initWithFrame:, - initWithFrame:font:或-initWithFrame:webView :(甚至只是-init,稍后再设置框架)。你应该挂钩所有案例,看看你是否得到任何结果以及它们中的哪一个。

%hook UITextView
-(id)initWithFrame:(CGRect)frame
{
    %log; // conveniently NSLogs self,selector,arguments
    return %orig;
}
-(id)initWithFrame:(CGRect)frame font:(UIFont *)font
{
    %log; 
    return %orig;
}
-(id)initWithFrame:(CGRect)frame webView:(UIWebView *)webView
{
    %log; 
    return %orig;
}
%end

2)确保你正在进行的进程是调用该方法的进程。如果你的项目的plist过滤“com.apple.springboard”并且你正在测试它到另一个应用程序,例如“com.apple.mobilesafari”,它不起作用。