0

UIBarButtonItemボタンのスクロールを追加するにはUIToolbar(ツールバーに多くのボタンを配置するため)?

buttonDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(buttonDoneDown)];
NSArray *itemsArray = [NSArray arrayWithObjects:buttonDone, nil];
[toolbar setItems:itemsArray];

助けてくれてありがとう!

4

4 に答える 4

3

Swiftの場合

7を追加したいとしましょUIBarButtonItemUIToolBar

最初にscrollViewを作成し、次にtoolBarをサブビューとして追加します

// In viewDidLoad

let scrollView = UIScrollView(frame: CGRect(x: 0, y: view.frame.height-44, width: view.frame.width, height: 50))

    let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 1000, height: scrollView.frame.height))

    let btn1 = UIBarButtonItem()
    let btn2 = UIBarButtonItem()
    let btn3 = UIBarButtonItem()
    let btn4 = UIBarButtonItem()
    let btn5 = UIBarButtonItem()
    let btn6 = UIBarButtonItem()
    let btn7 = UIBarButtonItem()
    toolBar.items = [btn1, btn2, btn3, btn4, btn5, btn6, btn7]

scrollView.addSubview(toolBar)

// The below line is important for scrollView to work
scrollView.contentSize = CGSize(width: 1000, height: 50)

最後に、scrollViewをtextFieldinputAccessoryViewとして追加します

textField.inputAccessoryView = scrollView

お役に立てば幸いです:]

于 2020-04-12T14:59:14.207 に答える
2

ツールバーのsuperViewを置き換えます。

buttonDone = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(buttonDoneDown)];
NSArray *itemsArray = [NSArray arrayWithObjects:buttonDone, nil];

UIScrollView *scrollView = [[UIScrollView alloc] init];
scrollView.frame = toolbar.frame;
scrollView.bounds = toolbar.bounds;
scrollView.autoresizingMask = toolbar.autoresizingMask;
scrollView.showsVerticalScrollIndicator = false;
scrollView.showsHorizontalScrollIndicator = false;
//scrollView.bounces = false;
UIView *superView = toolbar.superview;
[toolbar removeFromSuperview];
toolbar.autoresizingMask = UIViewAutoresizingNone;
toolbar.frame = CGRectMake(0, 0, X, toolbar.frame.size.height);
toolbar.bounds = toolbar.frame;
[toolbar setItems:itemsArray];
scrollView.contentSize = toolbar.frame.size;
[scrollView addSubview:toolbar];
[superView addSubview:scrollView];
于 2012-10-31T12:22:05.723 に答える
1

迅速なバージョン

func addToolBar(textField: UITextView){
    let toolBar = UIToolbar()
    toolBar.barStyle = UIBarStyle.default
    toolBar.isTranslucent = true
    toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
    let bold = UIBarButtonItem(image: #imageLiteral(resourceName: "download 12.01.19.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(boldFunc))
    let italic = UIBarButtonItem(image: #imageLiteral(resourceName: "italic-png-image-54776.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(italicFunc))
    let underlined = UIBarButtonItem(image: #imageLiteral(resourceName: "underlined_font-512.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(underlineFunc))
    let strikeThrough = UIBarButtonItem(image: #imageLiteral(resourceName: "Strikethrough_font_awesome.svg.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(strikeFunc))
    let size = UIBarButtonItem(title: "\(fontSize)", style: UIBarButtonItemStyle.done, target: self, action: #selector(changeSize))
    let textColor = UIBarButtonItem(image: #imageLiteral(resourceName: "text_color1600.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(changetextColor))
    let backgroundColor = UIBarButtonItem(image: #imageLiteral(resourceName: "background color.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(changebackgroundColor))
    let textLeft = UIBarButtonItem(image: #imageLiteral(resourceName: "left-27877_960_720.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignLeft))
    let textRight = UIBarButtonItem(image: #imageLiteral(resourceName: "align_right_filled1600.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignRight))
    let textCenter = UIBarButtonItem(image: #imageLiteral(resourceName: "center.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(alignCenter))
    let pic = UIBarButtonItem(image: #imageLiteral(resourceName: "add.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(appendPic))
    let bulletpoint = UIBarButtonItem(image: #imageLiteral(resourceName: "bulletpoint.png"), style: UIBarButtonItemStyle.done, target: self, action: #selector(makeBulletpoints))
    toolBar.setItems([bold, italic, underlined, strikeThrough, size, textColor, backgroundColor, textLeft, textRight, textCenter, pic, bulletpoint], animated: false)
    toolBar.isUserInteractionEnabled = true
    toolBar.sizeToFit()
    toolBar.frame = CGRect(x: 0, y: 0, width: 33 * 12, height: toolBar.frame.size.height)
    textField.delegate = self
    //////////try to add a scroll view
    let scrollView = UIScrollView()
    scrollView.frame = toolBar.frame;
    scrollView.bounds = toolBar.bounds;
    scrollView.autoresizingMask = toolBar.autoresizingMask;
    scrollView.showsVerticalScrollIndicator = false;
    scrollView.showsHorizontalScrollIndicator = false;
    scrollView.contentSize = toolBar.frame.size;
    scrollView.addSubview(toolBar)
    textField.inputAccessoryView = scrollView
}

幅を計算するとき

toolBar.frame = CGRect(x: 0, y: 0, width: 33 * 12, height: toolBar.frame.size.height)

幅は、使用するボタンのサイズによって異なります。私は12個のボタンを持っていて、ボタンのすべての画像は25 x 25で、テキスト付きのボタンが1つあります。最初に25x12と書きましたが、収まりませんでした。自動的にマージンが追加されると思います。ボタンのサイズの計算方法についてはあまり詳しく説明しなかったので、次の数が見つかるまで実験しました。私のためにうまくいった。

于 2017-11-29T10:56:26.527 に答える
-1

UIScrollViewを作成し、要件に応じてcontentSizeを設定し、UIToolbarのサブビューとして追加します。UIScrollViewにボタンをいくつでも追加して、スクロールを楽しんでください...

于 2012-10-31T09:56:32.423 に答える