下一个/上一个键盘工具栏iOS7

目前,我正在尝试将我的键盘工具栏上的下一个/上一个button设置为新的,精美的iOS 7后退button/前进button,以便导航控制器返回。 这是我正在尝试。 我怎样才能使用系统栏button项而不是无聊的静态文本?

[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的后台button项目,我只是不知道如何访问它在工具栏中。 我到处search 如果有帮助,我使用BSKeyboardControls。

编辑:为了使它看起来像第二个图像,使用由约书亚提供的图像,并将其保存为back@2x.png和forward@2x.png到您的xcode程序。 使用Chun的代码,但一定要调用获取图像的方法:imageNamed:@“back”,而不是@“back @ 2x”。 你现在有iOS 7的前后button:)

编辑2:为了让它看起来像下一个/上一个箭头button使用正确的实现方法中的以下自定义:

 [self.segmentedControl setWidth:50 forSegmentAtIndex:0]; [self.segmentedControl setWidth:38 forSegmentAtIndex:1]; negativeSeparator.width = -19; 

编辑3:带有<>箭头的工具栏默认与所有的UIWebViews一起使用,当您点击一个文本框时它就会出现。

如果有人对示例项目感兴趣,请告诉我,我会上传一个链接!

编辑4:截至2014年5月24日,BSKeyboardControls现在默认具有此function。

1)从https://github.com/simonbs/BSKeyboardControls下载最新的文&#x4EF6;

2)导入图像的后退/下一步button。 这些可以是任何你想要的,你可以设置适当的尺寸,使他们看起来不错。 约书亚有一个好的组合。 我把它保存为“keyboardBack.png”和“keyboardForward.png”

3)在BSKeyboardControls.m中,更新initWithFields:字段。 在这里你可以做一些自定义设置,如设置你的背部/下一个button的宽度。 我在这里删除了“完成”button,以便按照屏幕截图进行操作,但是可以将其添加回去。

 - (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; } 

注:我可能没有button的宽度和填充确切的规格,但你可以调整它的喜好!

这些是在工具栏中使用的图像,例如后退和前进button图像:

在这里输入图像说明

在这里输入图像说明

使用约书亚共享的图标,然后尝试下面的一段代码,你会很好去。 我没有在这里添加完成button。

 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]]; 

如果你不介意生活在边缘,你可以使用苹果的无证系统项目来实现iOS 7的外观。 这里是左右栏button项目。

  [self setDoneButton:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:105 target:nil action:nil]]; [self setDoneButton:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:106 target:nil action:nil]]; 

资料来源: http : //iphonedevwiki.net/index.php/UIBarButtonItem

您可以使用这个伟大的工具 @iftekhar和自定义IQSegmentedNextPrevious根据您的需要给图像,而不是下一个button。

使用这个: https://github.com/simonbs/BSKeyboardControlshttps://github.com/simonbs/BSKeyboardControls

但它使用了在iOS 7中变平的分段控制。

编辑:只是改变段的文字:

  [self setSegmentedControl:[[UISegmentedControl alloc] initWithItems:@[@"<",@">") ]]]; 

这可能不是最优雅的。 (甚至不确定这个确切的代码编译,但你看到的重点)

使用Xcode 7.3,您也可以input一个符号作为条形码的标题 。 这在代码和Interface Builder中都可以使用:

  • 将光标放在要显示符号的位置(例如,IB中的title框或代码中的引号内)。
  • 在Xcode的菜单中,点击编辑,然后点击表情和符号。 (或者,按控制命令空间调出字符列表。)
  • 在search框中,inputless更大
  • 然后,select你想要的符号。

默认情况下,小于号和大于号的符号在工具栏中以蓝色显示。

在代码中:

 backButton.title = "<" 

在IB:

控制命令单击以显示表情符号和符号