我想开发简单的调整来挂钩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
它的执行成功,但我无法获得任何输出。请检查这个调整并帮助我,如果我的方向不对,请建议我。
感谢。
答案 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”,它不起作用。