Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 用自定义视图替换UIBarButtonim_Ios_Swift_Uiimageview_Uibarbuttonitem - Fatal编程技术网

Ios 用自定义视图替换UIBarButtonim

Ios 用自定义视图替换UIBarButtonim,ios,swift,uiimageview,uibarbuttonitem,Ios,Swift,Uiimageview,Uibarbuttonitem,找到此代码以在十进制键盘垫中插入“完成”按钮,只要我不使用自定义视图,此代码就可以工作,如以下代码所示: extension UITextField { func makeKeyboardToolBar(title: String) { let keyboardToolBar = UIToolbar() keyboardToolBar.sizeToFit() let flexibleSpace = UIBarButtonItem(barB

找到此代码以在十进制键盘垫中插入“完成”按钮,只要我不使用自定义视图,此代码就可以工作,如以下代码所示:

extension UITextField {
    func makeKeyboardToolBar(title: String) {
        let keyboardToolBar = UIToolbar()
        keyboardToolBar.sizeToFit()

        let flexibleSpace = UIBarButtonItem(barButtonSystemItem:
            UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)

        let bimage = UIImageView(image: UIImage(named: "icon_plus_50"))

        let doneButton = UIBarButtonItem(title: title, style: UIBarButtonItem.Style.done,  target: self, action: #selector(self.doneClicked))

        doneButton.customView = bimage

        keyboardToolBar.setItems([flexibleSpace, doneButton], animated: true)

        self.inputAccessoryView = keyboardToolBar
    }

    @objc func doneClicked() {
        self.endEditing(true)
    }
}
图像出现,但没有反应。请不要设置自定义视图,否则会显示标题并根据需要进行单击响应。 也有类似的问题,但不是这样。目的-c。。。 感谢您的帮助。

请勿创建或使用UIImageView。只需用图像创建uibarbuttonite

let doneButton = UIBarButtonItem(image: UIImage(named: "icon_plus_50"), style: .plain, target: self, action: #selector(doneClicked))

无需设置customView。

是的,它工作并响应。但是图像将显示为实心,没有图像:它只是一个蓝色圆圈,在加号图标内有一个白色十字。出现的图像是没有白色十字的蓝色实心圆?它只是一个50x50 png。。。。如果我在普通视图中加载它,它会正常显示。默认情况下,工具栏图像是指模板。只有阿尔法才重要。如果要按原样显示图像,则需要将UIImageName:icon_plus_50更改为UIImageName:icon_plus_50.withRenderingMode.alwaysOriginal。此对象的帧在哪里?我相信,如果为自定义UIBarButtonItem设置框架,它将不会显示为UIBarButtonItem需要自动布局约束。如果您设置帧的高度和宽度而不是使用“自动”,则这可能是解决方案-layout@DavidLintin根据我的回答,不需要设置框架。也许你是想发表你对这个问题的评论而不是这个答案。@frameworker很乐意帮忙。请不要忘记单击答案左侧的复选标记,表明您的问题已解决。您可能希望在前面的问题中也这样做。