現在、キーボードツールバーの次/前のボタンを、ナビゲーションコントローラーに戻って戻るための、新しい洗練されたiOS 7の戻るボタン/進むボタンに設定しようとしています。これが私が試していることです。退屈な静的テキストの代わりにシステムバーのボタン項目を使用するにはどうすればよいですか?
[self setToolbar:[[UIToolbar alloc] initWithFrame:self.frame]];
[self.toolbar setBarStyle:UIBarStyleDefault];
[self.toolbar setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth)];
[self addSubview:self.toolbar];
[self setSegmentedControl:[[UISegmentedControl alloc] initWithItems:@[ NSLocalizedStringFromTable(@"Previous", @"BSKeyboardControls", @"Previous button title."),
NSLocalizedStringFromTable(@"Next", @"BSKeyboardControls", @"Next button title.") ]]];
これが今の様子です:
これが私がそれをどのように見せたいかです:
実際に画像を使用せずにこれらのシステムアイテムにアクセスする方法に関するアイデアはありますか?私はその正確なiOS 7バックバーボタンアイテムを知っていますが、ツールバーでそれにアクセスする方法がわかりません。私はどこでも検索しました。それが役立つ場合は、BSKeyboardControlsを使用しています。
編集:2番目の画像とまったく同じようにするには、Joshuaから提供された画像を使用し、back @ 2x.pngおよび[email protected]としてxcode projに保存します。 Chunのコードを使用しますが、@ "back @ 2x"ではなく、imageNamed:@ "back"のような画像を取得するメソッドを必ず呼び出してください。これでiOS 7の戻るボタンと進むボタンができました:)
EDIT2:次/前の矢印ボタンのように見えるようにするには、正しい実装方法で次のカスタマイズを使用します。
[self.segmentedControl setWidth:50 forSegmentAtIndex:0];
[self.segmentedControl setWidth:38 forSegmentAtIndex:1];
negativeSeparator.width = -19;
EDIT3:<>矢印の付いたツールバーは、デフォルトですべてのUIWebViewに付属しており、テキストフィールドをタップすると表示されます。
誰かがサンプルプロジェクトに興味がある場合は、お知らせください。リンクをアップロードします。
EDIT4:2014年5月24日の時点で、BSKeyboardControlsはデフォルトでこの機能を備えています。
1)最新のファイルを次からダウンロードします: https://github.com/simonbs/BSKeyboardControls
2)戻る/次へボタンの画像をインポートします。これらはあなたが好きなものにすることができ、適切に見えるように適切なサイズを設定できます。ジョシュアには良いセットがあります。私は「keyboardBack.png」と「keyboardForward.png」として保存しました
3)BSKeyboardControls.mで、initWithFields:fieldsを更新します。ここでは、戻る/次へボタンの幅を設定するなどのカスタマイズを行うことができます。スクリーンショットを追跡するために、ここでも[完了]ボタンを削除しましたが、元に戻すこともできます。
- (id)initWithFields:(NSArray *)fields
{
if (self = [super initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)])
{
// Creates toolbar
[self setToolbar:[[UIToolbar alloc] initWithFrame:self.frame]];
[self.toolbar setBarStyle:UIBarStyleDefault];
[self.toolbar setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth)];
[self addSubview:self.toolbar];
// Import images
UIImage *backImage = [[UIImage imageNamed:@"keyboardBack"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *forwardImage = [[UIImage imageNamed:@"keyboardForward"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
// Create segmentedcontrol
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[backImage, forwardImage]];
self.segmentedControl.tintColor = [UIColor clearColor];
// Set button widths
[self.segmentedControl setWidth:50 forSegmentAtIndex:0];
[self.segmentedControl setWidth:50 forSegmentAtIndex:1];
// Other BSKeyboardControls stuff
[self.segmentedControl addTarget:self action:@selector(segmentedControlValueChanged:) forControlEvents:UIControlEventValueChanged];
[self.segmentedControl setMomentary:YES];
[self.segmentedControl setEnabled:NO forSegmentAtIndex:BSKeyboardControlsDirectionPrevious];
[self.segmentedControl setEnabled:NO forSegmentAtIndex:BSKeyboardControlsDirectionNext];
[self setSegmentedControlItem:[[UIBarButtonItem alloc] initWithCustomView:self.segmentedControl]];
[self setVisibleControls:(BSKeyboardControlPreviousNext)];
[self setFields:fields];
}
return self;
}
4)ツールバーの左側のパディングが少なすぎるので、toolbarItems:にBSKeyboardControls.mの負のセパレーターを追加して修正できます。
- (NSArray *)toolbarItems
{
NSMutableArray *items = [NSMutableArray arrayWithCapacity:3];
if (self.visibleControls & BSKeyboardControlPreviousNext)
{
UIBarButtonItem *negativeSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil
action:nil];
negativeSeperator.width = -12;
[items addObject:negativeSeperator];
[items addObject:self.segmentedControlItem];
}
if (self.visibleControls & BSKeyboardControlDone)
{
[items addObject:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]];
[items addObject:self.doneButton];
}
return items;
}
注:正確な仕様に合わせたボタンの幅とパディングはおそらくありませんが、好みに合わせて調整できます!
これらは、ツールバーで使用される画像です。戻るおよび進むボタンの画像:
Joshuaが共有するアイコンを使用してから、以下のコードを試してみてください。ここには完了ボタンを追加していません。
UIImage *backImage = [[UIImage imageNamed:@"backImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *forwardImage = [[UIImage imageNamed:@"forward"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[backImage, forwardImage]];
[self.segmentedControl addTarget:self action:@selector(segmentedControlChangedState:) forControlEvents:UIControlEventValueChanged];
self.segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
self.segmentedControl.tintColor = [UIColor clearColor];
UIBarButtonItem *aSegmentedControlBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.segmentedControl];
[self setItems:@[aSegmentedControlBarButtonItem, self.flexibleSpace]];
Edgeでの生活を気にしない場合は、Appleの文書化されていないシステムアイテムを使用してiOS 7の外観を実現できます。左と右のバーボタンアイテムです。
[self setDoneButton:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:105 target:nil action:nil]];
[self setDoneButton:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:106 target:nil action:nil]];
この素晴らしい tool を@iftekharで使用し、次の前のボタンの代わりに画像を与える必要性に応じてIQSegmentedNextPrevious
をカスタマイズできます。
Xcode 7.3を使用すると、バーアイテムのtitleとして記号を入力することもできます。これは、コードとInterface Builderの両方で機能します。
title
ボックスまたはコードの引用符内)。小なり記号と大なり記号は、デフォルトではツールバーの青色になっています。
コードで:
backButton.title = "<"
IBでは:
これを使って: https://github.com/simonbs/BSKeyboardControls
しかし、iOS 7でフラット化されたセグメント化されたコントロールを使用します。
編集:セグメントのテキストを変更するだけです:
[self setSegmentedControl:[[UISegmentedControl alloc] initWithItems:@[@"<",@">") ]]];
これは最もエレガントではないかもしれません。 (この正確なコードがコンパイルされるかどうかさえわかりませんが、要点はわかります)