2

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

4

4 回答 4

6

如果您希望您的键盘在单击返回时退出,那么您必须编写,实现此方法....

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

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

return YES;

}

只需复制和粘贴.... :)

于 2012-03-16T13:07:35.930 回答
5

确保您声明支持该UITextViewDelegate协议。

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

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

    return YES;
}
于 2012-03-16T12:37:07.590 回答
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阅读协议参考以获取更多信息。

于 2012-03-16T12:28:59.117 回答
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;
}
于 2012-03-16T12:32:33.923 回答