UITextview委托问题

时间:2012-03-16 12:12:47

标签: iphone ios5 uitextviewdelegate

我想从UItextview中取消键盘。如何以编程方式实现UItextView委托方法。

4 个答案:

答案 0 :(得分:6)

如果你想点击返回时你的键盘被重新签名那么你必须写,实现这个方法....

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

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

return YES;

}

只需将其复制并粘贴....:)

答案 1 :(得分:5)

确保声明支持UITextViewDelegate协议。

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

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

    return YES;
}

答案 2 :(得分:4)

您应该使用UITextViewDelegate。您必须在类标题中声明协议的使用,如:

@interface YourClass:NSObject<UITextViewDelegate>

然后在你的.m中,你应该在某些方面将你的类设置为委托:

textView.delegate = self;

然后,在你的.m中,你必须实现委托方法,特别是:

textViewDidChange:

您可以在http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html阅读协议参考,以获取更多信息。

答案 3 :(得分:4)

UITextview没有特定的委托方法来了解用户何时点击“返回” 所以你可以这样做

//In .h File

@interface BlahBlah : UIViewController <UITextViewDelegate>
  @property(nonatomic, retain) IBOutlet UITextView *myTextView;
@end

//In .m File
@implementation BlahBlah

@synthesis myTextView;

//In some method, can be viewDidLoad OR viewDidAppear . your convenience ;) 
{
   self.myTextView.delegate = self;
}

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

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

        return YES;
}