UIBarButtonItem 击中区域(SwiftUI,但不仅如此)

问题描述 投票:0回答:1

因此,像许多其他人一样,我注意到使用 SwiftUI 添加为

Button
ToolbarItem
的点击区域比 UIKit 中的
UIBarButtonItem
小得多。至少我是这么想的。

下面是尝试 UIKit 等效项的简单代码:

import UIKit

@UIApplicationMain
final class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        let vc = UIViewController()
        vc.navigationItem.title = "VC"
        vc.view.backgroundColor = .gray //TO COMMENT OUT
        let barItem = UIBarButtonItem(title: "Test", image: nil, target: nil, action: nil)
        vc.navigationItem.rightBarButtonItem = barItem
        let nc = UINavigationController(rootViewController: vc)
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = nc
        window?.makeKeyAndVisible()
        return true
    }
}

它产生以下“正确”行为:

如您所见,点击区域很大,延伸到文本之外,对于用户来说很舒服。但是,如果我们注释掉设置上面视图的背景颜色(第

//TO COMMENT OUT
行),我们会得到与 SwiftUI 中观察到的相同的行为:

因此,在没有背景的情况下,我们会得到与 SwiftUI 中相同的行为 - ToolbarItem 的可点击区域太小,对于用户来说不舒服。

然而,我已经尝试了所有我能想到的方法,但 swill 找不到一种方法来确保 SwiftUI 中的可点击部分是合适的。

有谁知道解决方案是什么?

这是一个非常烦人的错误,我收到了用户的投诉:(

ios swift swiftui uikit uibarbuttonitem
1个回答
0
投票

仅供头脑风暴

疯狂的想法

用阴影增强按钮(UIBarButtonItem.customView属性),用alpha =1隐藏阴影因此使可选择区域更大?保持对齐矩形与现在相同。

更现实的想法

UIBarButtonItem 公开宽度(实例属性)。设置所需的更宽尺寸? UIBarButtonItem ->

var width: CGFloat { get set }

更不切实际的想法

修改 UIBarButtonItem 的 customView 设置新的自定义框架?

UIBarButtonItem ->

var customView: UIView?

© www.soinside.com 2019 - 2024. All rights reserved.