0

タイトル通り…どうしたらいいの?ユーザーに大量のテキストを入力してもらい、何らかの方法でキーボードを最小化して、そのビュー内の他のオブジェクトとの対話に戻るようにします。ただし、入力中にテキストをフォーマットするために使用できる「Enter」キーが必要になる場合があります。助言がありますか?

Anil は、次のコードを含むリンクを提案しました。

(void)textViewDidBeginEditing:(UITextView *)textView {

[self createInputAccessoryView];
[textView setInputAccessoryView:_inputAccessoryView];
self.myTextView = textView;  }

-(void)createInputAccessoryView {

_inputAccessoryView = [[UIToolbar alloc] init];
_inputAccessoryView.barStyle = UIBarStyleBlackOpaque;
[_inputAccessoryView sizeToFit];

_inputAccessoryView.frame = CGRectMake(0,_collageView.frame.size.height - 44, _collageView.frame.size.width, 44);

UIBarButtonItem *fontItem = [[UIBarButtonItem alloc] initWithTitle:@"Font"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:self action:@selector(changeFont:)];
UIBarButtonItem *removeItem = [[UIBarButtonItem alloc] initWithTitle:@"Remove"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:self action:@selector(removeTextView:)];
//Use this to put space in between your toolbox buttons
UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                          target:nil
                                                                          action:nil];
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                             style:UIBarButtonItemStyleDone
                                                            target:self action:@selector(dismissKeyBoard:)];

NSArray *items = [NSArray arrayWithObjects:fontItem,removeItem,flexItem,doneItem, nil];
[_inputAccessoryView setItems:items animated:YES];
[_myTextView addSubview:_inputAccessoryView];
}

ただし、概念的には少し遅れています... TextView、.h または .m ファイルへの参照をどこに置くのですか? どうすればいいのかわからない...

-(void)textViewDidBeginEditing:(UITextView *)textView {

...実際の TextField へのリンク。また、xcode は「_inputAccessoryView」がどこにも定義されていないことを示すエラーをスローしています。あなたの助けは大歓迎です!

4

2 に答える 2

2

UITextViewDelegateテキストビューのファーストレスポンダを辞任するメソッドを 実装

- (void)textViewDidEndEditing:(UITextView *)textView
 {
  [textView resignFirstResponder];
 } 

入力中にキーボードを閉じたい場合は、UITextField の入力アクセサリ ビューを使用します。キーボードにキャンセル ボタンを追加します。
この質問を確認してください
入力アクセサリビューを追加する方法

編集

あなたがしなければならないことは(viewDidLoadでこれらすべてを行うことができます)

UIToolbar *inputAccessoryView = [[UIToolbar alloc]init]; // Create one input accessory view, tool bar will be easy for you  
inputAccessoryView.frame = CGRectMake(0,self.view.frame.size.height - 44, self.view.frame.size.width, 44);

// Add required buttons
UIBarButtonItem *fontItem = [[UIBarButtonItem alloc] initWithTitle:@"Font"
                                                             style:UIBarButtonItemStyleBordered
                                                            target:self action:@selector(changeFont:)];
UIBarButtonItem *removeItem = [[UIBarButtonItem alloc] initWithTitle:@"Remove"
                                                               style:UIBarButtonItemStyleBordered
                                                              target:self action:@selector(removeTextView:)];
//Use this to put space in between your toolbox buttons
UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                          target:nil
                                                                          action:nil];
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                             style:UIBarButtonItemStyleDone
                                                            target:self action:@selector(dismissKeyBoard:)];

NSArray *items = [NSArray arrayWithObjects:fontItem,removeItem,flexItem,doneItem, nil];
[inputAccessoryView setItems:items animated:YES];

//You should create an outlet for the text view before doing this 
[self.textView setInputAccessoryView:inputAccessoryView];
于 2013-05-07T03:43:50.087 に答える
2

UIToolBar上記のキーボードを追加できます。次に、完了した UIBarBtttonItem をツールバーに追加します。したがって、ユーザーが完了ボタンを押すたびに、メソッドを呼び出してテキストビューを辞任します。

#define IS_IPHONE ( [[[UIDevice currentDevice] model] isEqualToString:@"iPhone"])
#define IS_HEIGHT_GTE_568 [[UIScreen mainScreen ] bounds].size.height >= 568.0f
#define IS_IPHONE_5 ( IS_IPHONE && IS_HEIGHT_GTE_568 )

元。: ViewDidLoad メソッドにこのコードを追加します

float y = IS_IPHONE_5:308:220
         toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0,y,320,44)]; 
                [toolBar setBarStyle:UIBarStyleBlackOpaque];
                UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Item" style:UIBarButtonItemStyleBordered target:self action:@selector(doneButtonTouched:)];

textViewShouldBeginEditingデリゲートが呼び出されると、ツールバーが表示されます

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    [toolBar setHidden:NO];
    return YES;
}

    #pragma mark---
    #pragma mark---IBAction Methods

    -(IBAction)doneButtonTouched:(id)sender
    {
        [YOUR_TEXTVIEW resignFirstResponder];
        [toolBar setHidden:YES];
    }

お役に立てば幸いです。

于 2013-05-07T04:26:07.613 に答える