2014-02-16 53 views
0

我想在代碼中手動創建我的故事板,而不是自動加載,因此我首先刪除了plist中的啓動故事板,如下所示:從應用程序中的故事板手動創建視圖控制器:didFinishLaunching不響應觸摸事件

enter image description here

有了這個在我的應用程序委託:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    UIViewController * initalViewController = [storyboard instantiateInitialViewController]; 

    UIWindow *window = [[UIWindow alloc] init]; 
    [window setRootViewController:initalViewController]; 
    [window makeKeyAndVisible]; 

    self.window = window; 

    return YES; 
} 

初始視圖控制器正確載荷和是可見的,但是它沒有得到任何觸摸事件。我甚至在touchesBegan上設置了一個斷點。有誰知道爲什麼觸摸不能被傳送?

回答

2

您已經創建了沒有框架的窗口,這意味着它實際上有一個框架{{0, 0}, {0, 0}}。視圖無法接收超出其父母範圍的觸摸,因此零框架內的所有內容都不在窗口範圍內。

你或許應該更新到這樣的事情

UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 

UIWindow文檔見附註(強調我自己)

注意
當您使用故事板和Xcode的應用程序模板來創建應用程序,爲您創建一個窗口。如果您選擇在Interface Builder中創建窗口,請確保在「屬性」檢查器中選擇「啓動時全屏」選項,以便爲當前設備適當調整窗口大小。 由於窗口在其邊界外沒有接收到觸摸事件,並且默認情況下視圖未被剪切到窗口邊界,所以尺寸不正確的窗口可能無法將觸摸事件傳遞到其所有視圖。

相關問題