2013-03-04 52 views
0

我在中添加了我的UITextFieldUITextView我無法在裏面輸入它們。兩人都不讓我允許輸入這些字段。並且,在鍵盤按下返回時無法解除它。當UITextField和UITextview顯示在UIWindow裏面時,粘上鍵盤

-(void)showAlert 
{ 
alertWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
alertView = [[UIView alloc] initWithFrame:CGRectMake(10, 115, 300, 230)]; 
alertWindow.windowLevel = UIWindowLevelAlert; // puts it above the status bar 
alertView.center = CGPointMake(alertWindow.frame.size.width/2, alertWindow.frame.size.height/2); 
alertView.backgroundColor = [UIColor whiteColor]; 
alertView.layer.borderWidth = 1.0; 
alertView.layer.borderColor = [[UIColor whiteColor]CGColor]; 

UITextField *txt = .... 
.... 
.... 
txt.delegate = self; 
... 
... 
[alertView addSubview:txt]; 

UITextView *txtview = ... 
.... 
.... 
txtview.delegate = self; 
... 
[alertView addSubview:txtview]; 

[alertWindow addSubview:alertView]; 
[alertWindow addSubviewWithZoomInAnimation:alertView duration:1.0 option:curveValues[0]]; 
[alertWindow setHidden:NO]; 
} 

我已經聲明瞭兩個委託方法。我在那裏放置了一個斷點,並進行了檢查,即使尚未調用該方法。

更新 -

textFieldShouldReturn委託方法

- (BOOL) textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    [reserveView resignFirstResponder]; 
    [reserveWindow resignFirstResponder]; 
    [self.reserveWindow endEditing:YES]; 
    [reserveView endEditing:YES]; 
    return YES; 
} 

回答

1

我發現,這種方法還沒有被調用,因爲UIWindow所以,我從here改變了我的UIWindowUIView而且,我解決了這個問題,通過使用UIView+Animation.h它提供什麼需要我的動畫究竟。

- (void) addSubviewWithZoomInAnimation:(UIView*)view duration:(float)secs option:(UIViewAnimationOptions)option; 
- (void) removeWithZoomOutAnimation:(float)secs option:(UIViewAnimationOptions)option; 

感謝Google!乾杯!

+0

+1分享此問題 – swiftBoy 2013-03-06 07:26:58

+0

@RDC別客氣! – Praveenkumar 2013-03-06 07:40:46

0

鍵盤將永遠不會對自己的解僱(即使你打回!)。你會注意到,在你的委託方法中,只要你按下return/done/etc,你就會收到事件。

一個簡單的方法來使鍵盤解僱每有人點擊返回鍵時間是實現- (BOOL)textViewShouldEndEditing:(UITextView *)textView方法。

- (BOOL)textViewShouldEndEditing:(UITextView *)textView 
{ 
    [textView endEditing:YES]; 
    return YES; 
} 

編輯:在您的文章,你編輯說,你已經宣佈雙方的委託方法...有兩個以上,以便你能澄清你已經實現了什麼方法? http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html#//apple_ref/occ/intf/UITextViewDelegate

+0

謝謝!我找到了問題並修復了它。 – Praveenkumar 2013-03-06 05:56:55

1

你應該嘗試一下本作從一個UIWindow

[self.window endEditing:YES]; 

Source

+0

你能看到我更新的代碼嗎? 'textFieldShouldReturn'甚至沒有被調用。檢查斷點也:( – Praveenkumar 2013-03-04 06:24:07

+0

謝謝!我發現了問題,並修復它。 – Praveenkumar 2013-03-06 05:57:42

0

取消鍵盤試試這個

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)]; 
    tapGesture.cancelsTouchesInView = NO; 
    [self.window addGestureRecognizer:tapGesture]; 
    //[self.view addGestureRecognizer:tapGesture]; 
    [tapGesture release]; 
} 
-(void)dismissKeyboard 
{ 
[txt resignFirstResponder]; 
[textView resignFirstResponder]; 
} 
+0

謝謝!我發現了問題,並修復它。 – Praveenkumar 2013-03-06 05:58:18

0

試試這個

這是文本框的委託方法: -

  • (BOOL)textFieldShouldReturn:(的UITextField *)的TextField

    {

    [txtview resignFirstResponder]; 
    

    返回NO;

    }

+0

謝謝!我發現了問題並修復它。 – Praveenkumar 2013-03-06 05:58:39

相關問題