在textView中,当我单击完成按钮时键盘没有退出

时间:2011-02-01 12:18:27

标签: iphone objective-c

单击完成按钮后,我在调整键盘时出现问题。我正在使用textView

-(BOOL)textViewShouldReturn:(UITextView *)textView
{
    if(textView == addressView)
    {
        if(isNotif)
        {
            [self setViewMovedUp:NO];
        }
        textView.text= [textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        [addressView resignFirstResponder];
    }
    return YES;
}

光标不是键盘重新签名,而是在文本字段中转到新行。 请帮帮我。

谢谢 Praveena。

4 个答案:

答案 0 :(得分:5)

修正了KingOfBliss的回答:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{       
    if (textView == messageInput) {
        if ([text isEqualToString:@"\n"]) {
            [textView resignFirstResponder];
            return NO;
        }
    }
    return YES;
}

答案 1 :(得分:4)

使用以下代理

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if (textView == YourTextField){
        if ([text isEqualToString:@"\n"]) {
                [textView resignFirstResponder];
                return NO;
        }
    }
    return YES;
}

通常在textView中,返回键用于将\ n添加到文本中,因此最好在UItextView的顶部添加一些其他按钮并在那里编写resigning函数。

修改

没有此类委托-(BOOL)textViewShouldReturn:(UITextView *)textView

答案 2 :(得分:1)

如果视图层次结构中此textView上方的ViewController不是此textView的委托,则会发生这种情况。如果不是那么ViewController永远不会得到消息textViewShouldReturn。在创建了subView(UITextView)之后的viewController中。

aTextView.delegate = self;

要检查以确保它被调用,请将此添加到您的函数并测试

NSLog(@"resigning first responder");

这将测试该函数是否被称为

答案 3 :(得分:0)

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

就我的情况而言已经足够了。