1

私は私を助けるために多くの記事を見てきましたが、答えを見つけることができませんでした...

キーボードがアクティブなときに右のバーボタンを「完了」ボタンに置​​き換え、編集が終了したら元に戻したい...

セグメント化されたコントロールであり、ビューの読み込み時に設定される右バー ボタンが既にあります。バーボタンが作成されたら、それを切り替えることができるかどうかわかりません。

以下はいくつかのスクリーンショットです...

キーボードが表示されたときに前へ/次へボタンを完了ボタンに変更したい

キーボードが表示されたときに前へ/次へボタンを完了ボタンに変更したい

キーボード付き画面

以下は、キーボードが表示されたときにトリガーされる私のコードです...コードは実行されますが、ボタンは表示されません...

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
// Replace the Right Navigation Button with done button

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                            target:self
                                                                            action:@selector(doneEditing)];
self.navigationItem.rightBarButtonItem = doneButton;

// Slide up the view

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

CGRect rect = self.view.frame;

// Move the view .... Note need to calculate this based on the size of the keyboard !!

rect.origin.y -= 120.0f;
rect.size.height += 120.f;

self.view.frame = rect;

// Resize the text view .... Note need to calculate this based on screen size !!

CGSize frameSize = self.reviewTextView.frame.size;
CGPoint framePos = self.reviewTextView.frame.origin;
[self.reviewTextView setFrame:CGRectMake(framePos.x, framePos.y, frameSize.width, 200.0f)];

[UIView commitAnimations];

return YES;
}

以下は、ビューが読み込まれたときに前へ/次へのボタンを設定するためのコード セグメントです。

    //set up the segmented control and add it to the nav bar rightBartButtonItem

UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"\U000025C0\U0000FE0E Prev", @"Next \U000025B6\U0000FE0E", nil]];
UIBarButtonItem * segmentControlButton = [[UIBarButtonItem alloc] initWithCustomView:segmentControl];
[segmentControl setBackgroundColor:[UIColor clearColor]];
segmentControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentControl.frame = CGRectMake(0, 0, 120, 30);
[segmentControl setMomentary:YES];
[segmentControl addTarget:self
                   action:@selector(onSegmentChanged:)
         forControlEvents:UIControlEventValueChanged];
self.navigationItem.rightBarButtonItem = segmentControlButton;
4

3 に答える 3

0

これを試して、

if(keyboardIsActive){
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc]
                                   initWithTitle:@"Done"
                                   style:UIBarButtonItemStyleBordered
                                   target:self.revealViewController
                                   action:@selector(revealToggle:)];

    destinationViewController.navigationItem.leftBarButtonItem = menuButton;}
于 2013-09-23T10:51:39.050 に答える
0

申し訳ありませんが、これは私の側のコーディング エラーです...

ユーザー MICANTOX からのサポート あなたは正しいコードを持っているが間違った場所にあるという考えを引き起こしました!!! これはサブビューであるため、適切な場所でコードを実行していませんでした....コードは親ビューに配置されました

于 2013-09-23T15:14:20.527 に答える