2011-10-29 124 views
2

我有一個全屏UIImageView的ViewController。我隱藏了statusBar和NavigationBar,所以沒有辦法返回,只能點擊某處。touchesBegan關閉視圖

所以我想回去只是用這個的touchesBegan

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{  
    [self dismissModalViewControllerAnimated:YES]; 
} 

我還試圖用這種方式

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    [self.navigationController setNavigationBarHidden:YES]; 

    UITapGestureRecognizer *tapRecognizer; 
    tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissModalViewControllerAnimated:)]; 
    [imageFrame addGestureRecognizer:tapRecognizer]; 

    imageFrame.image = [UIImage imageWithContentsOfFile:image]; 

    [tapRecognizer release]; 
} 

我被困在那裏,這種全屏幕圖像,我可以」不要回頭。 我怎樣才能關閉viewcontroller?

+0

有什麼想法?你沒有告訴我們問題是什麼。也許touchesBegan不叫?你在尋找最佳做法嗎? – LearnCocos2D

+0

呃......沒什麼用。我的意思是,我卡在那裏白衣這個全屏幕圖像,我不能回去。我會編輯我的問題,對不起。 – Oiproks

回答

3

如果你正在使用導航欄,我假設你做了一個pushViewController來啓動這個視圖控制器?在這種情況下,您想要

[self.navigationController popViewControllerAnimated:YES]; 

解除控制器。

+0

對!我看不到那個。非常感謝。還有一件事:我隱藏了statusBar和NavigationBar,所以當我彈出這個視圖時,它們也隱藏在舊視圖中。將它們設置回'viewDidAppear'是解決此問題的唯一方法,或者您可以向我推薦一些更好的方法? – Oiproks

+0

我實際上會建議在viewWillAppear中進行操作,但是是的,這是我知道的恢復導航欄可見性的唯一方法。 –

0

當然,您的解決方案假定圖像視圖實際上是在某處用presentModalViewController:animated:表示的模式視圖控制器。

我的建議是將UIButton放置在圖像視圖的頂部並調整大小。將其Touch Up Inside連接到您的迴歸方法,然後將其alpha設置爲0或通過IB或屬性隱藏它。該按鈕不會顯示,但它仍然會收到觸摸事件。

+0

我試着用按鈕,但它不工作。我用Alan Moore Solution解決了問題。你的解決方案很聰明!我想我會在別的地方使用它。非常感謝。 – Oiproks

+0

...現在我很好奇 - 你爲什麼試圖解僱一個模態視圖控制器,如果你從來沒有提交過? – FeifanZ

+0

我錯了,我用presentModalViewController:動畫!我從今天早上開始工作,現在已經快上午1點了。這裏...我應該去睡覺。 – Oiproks

0

你應該在父視圖控制器上調用dismissModalViewControllerAnimated:而不是你想隱藏的那個。

此外,請確保將UIImageView的userInteractionEnabled屬性設置爲yes,因爲與常規UIView不同,默認情況下,它不回答觸摸事件。

+0

我忘了在UIImageView上啓用userInteraction,但這不是主要問題。不管怎麼說,還是要謝謝你。 – Oiproks