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

Jos*_*osa 23 cocoa-touch objective-c ios ios7

目前,我正在尝试将键盘工具栏上的下一个/上一个按钮设置为新的,时尚的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.") ]]];
Run Code Online (Sandbox Code Playgroud)

这是现在的样子:

在此输入图像描述

这是我想要的样子: 在此输入图像描述

如何在不实际使用图像的情况下访问这些系统项目的任何想法?我知道它确切的iOS 7后退栏按钮项目,我只是不知道如何在工具栏中访问它.我到处搜寻.如果它有帮助,我正在使用BSKeyboardControls.

编辑:要使其看起来与第二张图像完全相同,请使用Joshua提供的图像,并将它们保存为back@2x.png和forward@2x.png到您的xcode项目中.使用Chun的代码,但请务必调用获取图像的方法:imageNamed:@"back",而不是@"back @ 2x".你现在有iOS 7后退和前进按钮:)

编辑2:要使其看起来与下一个/上一个箭头按钮完全相同,请在正确的实现方法中使用以下自定义:

[self.segmentedControl setWidth:50 forSegmentAtIndex:0];
[self.segmentedControl setWidth:38 forSegmentAtIndex:1];

negativeSeparator.width = -19;
Run Code Online (Sandbox Code Playgroud)

编辑3:带有<>箭头的工具栏默认包含所有UIWebViews,当您点击文本字段时会出现.

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

EDIT4:截至2014年5月24日,BSKeyboardControls现在默认具有此功能.

Jos*_*hua 21

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

在此输入图像描述

在此输入图像描述


Abh*_*nav 8

使用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]];
Run Code Online (Sandbox Code Playgroud)


Chu*_*hun 6

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;
}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

注意:我可能没有按钮宽度和填充到确切的规格,但你可以根据自己的喜好调整它!


Ste*_*ser 5

如果您不介意生活在边缘,您可以使用Apple的未记录的系统项目来实现iOS 7外观.这是左右栏按钮项.

    [self setDoneButton:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:105 target:nil action:nil]];
    [self setDoneButton:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:106 target:nil action:nil]];
Run Code Online (Sandbox Code Playgroud)

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