2012-08-27 78 views
1

ViewController包含子視圖駁回爲UITextField觸發iPhone鍵盤在一個子視圖

UIView位於NameSubViewController(類XIB)

子視圖包含UITextField。在廈門國際銀行

- (IBAction)textFieldReturn:(id)sender;

NameSubViewController類並將其連接到文本框(並最終退出)從文件的所有者:


我加入這一行動。

但是,當我點擊返回時,日誌會給我一個錯誤信息,在模擬器中什麼也沒有發生。

這是相關的代碼:


ViewController.h:

@property (nonatomic, strong) UIView *nameSubView; 

ViewController.m(viewDidLoad中):

UIViewController *nameController = [[NameSubViewController alloc] initWithNibName:@"NameSubViewController" bundle:nil]; 
nameSubView = [nameController view]; 

[self.view addSubview:nameSubView]; 

NameSubViewController.h:

#import <UIKit/UIKit.h> 

@interface NameSubViewController : UIViewController 

@property (nonatomic, strong) IBOutlet UITextField *textField; 

- (IBAction)textFieldReturn:(id)sender; 
//Not working.. Connected from files owner to textField with option didEndOnExit 

NameSubViewController.m:

-(IBAction)textFieldReturn:(id)sender 
{ 
[sender resignFirstResponder]; 
} 

當我打回我在日誌中得到這個消息:

AppName[6656:f803] -[CALayer textFieldReturn:]: unrecognized selector sent to instance 0x6e99d40 2012-08-28 02:51:26.954 AppName[6656:f803] *** WebKit discarded an uncaught exception in the webView:shouldInsertText:replacingDOMRange:givenAction: delegate: <NSInvalidArgumentException> -[CALayer textFieldReturn:]: unrecognized selector sent to instance 0x6e99d40

和鍵盤不被解僱。什麼可能導致我的問題?

的視圖控制器:其顯示在視圖控制器的子視圖

http://www.flickr.com/photos/[email protected]/7877111708/in/photostream

的NameSubViewController,視圖:

http://www.flickr.com/photos/[email protected]/7877111596/in/photostream

+0

如果我在'MainViewController'類中添加'IBAction',當文本字段在另一個類中時,我無法將它連接到文本字段。 – ingenspor

+0

您在文本字段IBAction中有什麼代碼? – rdelmar

+0

如果您可以將IBOutlet連接到另一個課程的IBAction,我會感到非常驚訝。我懷疑你可以使用xib作爲* sub *視圖。如果你想要一個只覆蓋部分屏幕的子視圖,我可以把它放在常規的xib中,或者以編程方式添加它(你可以和xib一起使用)。如果你的子視圖覆蓋整個屏幕,你最好把它分配給一個單獨的視圖控制器,讓你的MainViewController呈現該控制器。我可能是錯的,但如果沒有人相反,那就是我會做的。 – Wienke

回答

1

你打算委託是一個的CALayer? [CALayer textFieldReturn:]

現在,它是。

+0

我不知道它爲什麼是..任何線索? – ingenspor

+1

這就是你設定的。 :-) – xyzzycoder

+0

我可以在哪裏設置代表CALayer?從來沒有做過這樣的事情。我是否在IB中使用連接做了錯誤操作,或者當我試圖從子視圖類中關閉鍵盤時,我做錯了什麼?我沒有更多的代碼可能導致這種情況。 – ingenspor

0

我終於自己找到了解決方案。這是很簡單的,我只是來爲NameSubViewController的UIView一類,把textfieldReturn代碼UIView類:

#import <UIKit/UIKit.h> 

@interface NameSubView : UIView 

@property (nonatomic, strong) IBOutlet UITextField *textField; 

- (IBAction)textFieldReturn:(id)sender; 

@end 

和鍵盤正在恢復,因爲它應該!有意義,因爲只有UIView作爲主視圖的子視圖加載,而沒有子視圖視圖控制器。一個ViewController不應該是另一個視圖的子視圖,只能是其視圖,所以代碼必須寫在子視圖UIView類中。不是子視圖UIViewController類!