UITextView没有辞职

时间:2014-02-12 06:39:40

标签: ios iphone objective-c uitextview

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

我试过做返回键方法

- (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;
}
}

我也尝试过使用带UIBarButton的UIToolBar

-(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");
}

没有.....我已经使用NSLog来确保调用这两种方法,但键盘不会辞职。我还使用和if语句来检查以确保UITextView(postMessage)是firstResponder并且它是。

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

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

我确实在.h上设置了UITextViewDelegate。 我的ViewDidLoad

中也有postMessage.delegate = self

谢谢! -Mike

3 个答案:

答案 0 :(得分:1)

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

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

    return YES;
}

我正在使用这项工作

答案 1 :(得分: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];
}

答案 2 :(得分:0)

将TextField Delegate附加到文件所有者,清理构建并运行项目