1

よろしくお願いします。私はこれに関するすべてのものを読みましたが、それを解決することができませんでした。

次のように、UITextFieldでキーボードを非表示にする方法を知っています。

    - (BOOL)textFieldShouldReturn:(UITextField *)textField{
    [placename resignFirstResponder];
    [address resignFirstResponder];

    return YES;
}

しかし、私はUITextViewも持っていて、それを非表示にする方法がわかりません。ボタンで隠したくないリターンで「完了」で隠したい。

私はこのようなものを読みました:

[textField setReturnKeyType: UIReturnKeyDone];

しかし...それをどこでどのように実装するのですか?私はこれに慣れていないので、段階的に知っておく必要があります。

本当にありがとう。(申し訳ありませんが、画像を送信できません...新しいユーザー;))

4

2 に答える 2

4

それは簡単です。コントローラーに textview デリゲートを配置し、次のメソッドを追加します。

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

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

    return YES;
}

これを使用すると、ユーザーが複数行のステートメントを記述できないという欠点が 1 つあります。これを解決するには、キーボード上にビューを作成し、そこにボタンを配置して、テキストビューを辞任するアクションを追加します。

この質問のクレジット

于 2012-10-20T12:40:09.977 に答える
0

@JanakNirmal Answers への追加、.h および .m のコード。私にとってはうまくいきます。

.h

@interface ViewController : UIViewController <UITextViewDelegate>
@property (weak, nonatomic) IBOutlet UITextView *textField; // connected with IB
@end

.m

@interface ViewController ()
- (void)viewDidLoad
{
    [super viewDidLoad];

    // Done key and hide keyboard 
    [self.textField setDelegate:self];
    [self.textField setReturnKeyType:UIReturnKeyDone];
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range  replacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"])
    {
        [textView resignFirstResponder];
    }
    return YES;
}
@end
于 2014-01-29T10:17:06.647 に答える