2014-02-12 44 views
1

好吧,我已经穷尽谷歌和本网站寻找答案,找不到一个。我目前有一个UITextView(postMessage),它的键盘不会消失。我已经尝试了所有可能的代码组合,以使其解散,但它根本不会。UITextView不辞职

我试图做使用UIToolBar与UIBarButton

-(IBAction)done:(id)sender { 
[self keyboardIsHidden]; 
[[self view] endEditing: YES]; 
[self.postMessage becomeFirstResponder]; 
[self.topLayer endEditing:YES]; 
[self.view endEditing:YES]; 
[self.collectionView endEditing:YES]; 
//[self.postMessage.editable = NO]; 
[self.postMessage resignFirstResponder]; 

keyboardBar.hidden = YES; 
NSLog(@"done"); 
} 

并没有什么返回键方法

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 
if([text isEqualToString:@"\n"]){ 
    //MainViewController *mvc = [[MainViewController alloc] init]; 
    //[mvc.view endEditing:YES]; 
    //[[self view] endEditing: YES]; 
    //[self.postMessage becomeFirstResponder]; 
    //[self.topLayer endEditing:YES]; 
    //[self.view endEditing:YES]; 
    //[self.collectionView endEditing:YES]; 
    //[self.postMessage.editable = NO]; 
    //[postMessage resignFirstResponder]; 
    [self.postMessage resignFirstResponder]; 
    return NO; 
}else{ 
    return YES; 
} 
} 

我也试过.....我已经使用NSLogs确保这两种方法都被调用,但键盘不会辞职。我也使用和if语句来检查以确保UITextView(postMessage)是firstResponder,它是。

在我的项目中,我有2个视图(不是视图控制器)底层视图和顶层。用户将顶层拉入视图。我也有一个UICollectionView。

我注意到,当我按下键盘上的返回键或UIToolBar上的'完成'键时,UICollectionView重新加载数据。

我确实在.h上设置了UITextViewDelegate。 我也有我的ViewDidLoad postMessage.delegate = self

谢谢! -Mike

+1

确保您已经设置委托给TextView的 – Rajjjjjj

+0

检查委托设置为textview&如果您使用IB,然后检查插座连接。 – OMK

+0

你在ViewDidLoad方法中设置了委托吗? – GenieWanted

回答

1
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 

    if([string isEqualToString:@"\n"]) { 
     [textField resignFirstResponder]; 
     return NO; 
    } 

    return YES; 
} 

我使用这项工作很好

0

你可以使用这个样子。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
replacementText:(NSString *)text 
{ 

if ([text isEqualToString:@"\n"]) { 

    [textView resignFirstResponder]; 
    // Return FALSE so that the final '\n' character doesn't get added 
    return NO; 
} 
// For any other character return TRUE so that the text gets added to the view 
return YES; 
} 

或创建一个按钮..

-(IBAction)btnclicked{ 

[txtvw resignFirstResponder]; 
} 
+0

我已经试过了。不过谢谢。 – MBarton

0

附上您的文本字段代表与文件所有者,干净的构建和运行项目

+0

我已经这样做了,没有运气。 – MBarton