2012-09-03 55 views
0

我有一個按鈕在鎖屏顯示一個警告時被觸摸,我只是玩這個東西,並試圖做到這一點,但是當我觸摸按鈕它崩潰並respring以安全模式進入。我在我的iPhone.Here狄奧運行它是我的代碼:按鈕不能在鎖屏工作

#import <UIKit/UIKit.h> 


@interface SBAwayView : UIView 

@end 


@interface SBAwayController 

UIButton *myButton; 
-(void)unlockWithSound : (BOOL)sound; 

@end 



%hook SBAwayController 

-(id)lock{ 

SBAwayView *v = MSHookIvar<id>(self, "_awayView"); 

myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
myButton.frame = CGRectMake(21, 80, 100, 35); 
[myButton setTitle:@"My Button" forState:UIControlStateNormal]; 
[myButton addTarget:self action:@selector(myButtonPressed)  forControlEvents:UIControlEventTouchUpInside]; 

[v addSubview:myButton]; 

%orig; 
} 

-(void)myButtonPressed{ 

UIAlertView *theAlert = [[UIAlertView alloc] initWithTitle:@"Title of Alert" message:@"Message of Alert" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; 
[theAlert show]; 
[theAlert release]; 

} 


%end 
+0

給我們一些日誌。安裝來自Cydia的Crash Reporter,然後通過SSH尾部-f/var/log/syslog獲取正在運行的「實時」報告。它會在終端窗口中打印日誌。 –

+0

這是如何,我試圖ssh我的iphone,然後-f/var/log/syslog,但說命令沒有找到,在崩潰記者應用程序我有一個崩潰日誌你需要跳板崩潰日誌嗎? – user1628700

+0

我不認爲你把尾巴命令。 「tail -f/var/log/syslog」。讓我看看這裏的崩潰輸入。我們可以使用跳板故障日誌,但「飛行中」可以更容易地獲取崩潰日誌。 –

回答

0

先試着調試,看看功能被稱爲與否。

然後也是它崩潰,然後嘗試使用自動釋放

UIAlertView *theAlert = [[[UIAlertView alloc] initWithTitle:@"Title of Alert" message:@"Message of Alert" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil] autorelease] ; 
[theAlert show]; 
+0

雖然這不會幫助找到崩潰的來源。最多它會告訴我們該方法是否被調用。基於OP,我會說它確實會被調用並在那裏崩潰。 –

0

你需要新的%(V @ :)之前,你的空虛;

%new([email protected]:) 
-(void)myButtonPressed{ 

UIAlertView *theAlert = [[UIAlertView alloc] initWithTitle:@"Title of Alert" message:@"Message of Alert" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; 
[theAlert show]; 
[theAlert release]; 

} 
+1

爲什麼這是必要的? – jturolla