2012-11-12 27 views
0

我創建了一個應用程序,並在ViewController.mviewDidLoad,我寫了下面的代碼什麼是我FirstResponder

for (UIView* v in self.view.subviews){ 
     NSLog(@"View is %@",v); 
     NSLog(@"First Responder is %@",[v isFirstResponder][email protected]"YES":@"NO"); 
    } 
NSLog(@"First Responder is %@",[self isFirstResponder][email protected]"YES":@"NO"); 
NSLog(@"First Responder is %@",[self.view isFirstResponder][email protected]"YES":@"NO"); 

但它返回NO的一切。默認情況下我的第一個響應者是什麼?

回答

1

在您的主視圖控制器,這樣做:

for (UIView *sub in self.view.subviews) 
{ 
    if (sub.isFirstResponder) 
     NSLog(@"It's me!"); 
} 
0

documentation for OS X

確定第一響應狀態

通常一個NSResponder類對象可以隨時確定它是否是當前第一響應者通過詢問其第一響應者的窗口(或其本身,如果它是NSWindow對象),然後將其自身與t帽子對象。您通過發送第一個響應者消息向第一響應者請求NSWindow對象。對於一個的NSView對象,這種比較看起來像下面的代碼位:

if ([[self window] firstResponder] == self) { 
    // do something based upon first-responder status 
} 

注:這是爲OS X不幸的是iOS不具備類似的系統,但可以通過實現:

UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

這是無證的,可能會被Apple拒絕。對於測試和探索性研究,這對您來說很方便。

這裏是第一反應的一些文件中的iOS:

+0

如果這個答案是適合您的需求,請你接受嗎?謝謝 – WDUK