我有一个导航栏,其中包含一些UIBarButtonItem按钮和类似的UISearchBar挂钩
var searchController: UISearchController!
override func viewDidLoad() {
super.viewDidLoad()
title = "Test"
tableView.delegate = self
tableView.dataSource = self
searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
// This leads to the bug
searchController.hidesNavigationBarDuringPresentation = false
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(leftTapped))
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(rightTapped))
}
Run Code Online (Sandbox Code Playgroud)
场景:我点击搜索栏,然后点击取消。
问题1:除非我触摸屏幕的最外面的像素,否则条形按钮对触摸没有反应(仅在模拟器和鼠标单击时才可能)。
问题2:当我按下另一个视图控制器时,导航项重叠。
当我使用hidesNavigationBarDuringPresentation = true它时,它的工作就像预期的那样。
该问题出现在使用Xcode 11.0和11.1的带槽口和非带槽口的iPhone iOS 13.0和13.1上。
这是整个测试项目:https : //github.com/fl034/HidesNavigationBarDuringPresentationTest
我已经提起雷达(您也应该提起诉讼),但是也许你们中的有些人已经找到了解决方法?
更新1:iOS …
我正在运行 Mac OS X Mojave 10.14.6。我安装的唯一应用程序是新下载的 Xcode 11.1 GM Seed (11A1027)。这个系统上没有以前的文件、项目或应用程序,因为我只是想开始学习 Swift 编程。
在 Xcode 中,我为单视图 iOS 应用程序创建了一个新项目。我编译它没有任何更改,构建成功。默认情况下,它会在 iOS 13.1 上启动 iPhone 11 Pro Max。
模拟器启动,设备窗口出现,进度条显示一段时间。过了一会儿,黑屏上出现了一个旋转的指示器,但什么也没发生。这持续了几分钟,之后 Xcode 显示此错误:
打开“com.example.FoodTracker”的请求失败。意外的错误类型。
Details:
The request to open "com.example.FoodTracker" failed.
Domain: FBSOpenApplicationServiceErrorDomain
Code: 5
Failure Reason: Unexpected error type.
User Info: {
BSErrorCodeDescription = InvlaidResponse;
}
--
The operation couldn't be completed.
(BSServiceConnectionErrorDomain error 3.)
Domain: BSServiceConnectionErrorDomain
Code: 3
User Info: {
BSErrorCodeDescription = OperationFailed;
}
--
Run Code Online (Sandbox Code Playgroud)
我让设备在模拟器中运行了很长一段时间,但它从未停止旋转。
我尝试重新安装 Xcode,删除了 DerivedData 目录,进行了干净构建,重新安装了一些 Xcode 组件,但我认为 …
使用 iOS 13 的新功能来报告 TestFlight 版本的崩溃,在某些应用程序上,我遇到了一个问题,该问题仅feedback.json在没有实际崩溃报告的情况下报告。有什么可以启用的吗?
值得一提的是,crashalitics 已启用并且不报告任何崩溃。
更新:所以经过一些调查,我发现reports without a crash logs are system terminations. 就我而言,当我从手机中提取设备日志时0xbadf000d,其中一个含义是系统在后台终止了一个长进程。似乎它一直在那里,但是通过 iOS13 Testflight 反馈,它会在弹出窗口中变得可见。
顺便说一句,来自 Xcode“设备和模拟器”的日志不知何故与手机上的日志不同步。
外卖:面临手动模拟崩溃报告的需要,因此发现了非常有用的 stackoferlow 帖子:https ://stackoverflow.com/a/45207863/3032917
我试图在 中配置按钮contextMenu,但它不起作用。
Text("A label that have context menu")
.contextMenu {
Button(action: {
// remove it
}) {
Text("Remove")
.foregroundColor(.red) // Not working
Image(systemName: "trash")
}.disabled(true) // Not working
}
Run Code Online (Sandbox Code Playgroud)
我拥有的:
我在寻找什么:(删除和呼叫按钮)
我会创建一个UIAction类似以下的内容,UIKit但我找不到任何修饰符或无论如何将其带到SwiftUI:
let delete = UIAction(title: "Remove", image: UIImage(systemName: "trash"), attributes: .destructive) { action in
// remove it
}
Run Code Online (Sandbox Code Playgroud) 我当前正在使用Xcode 11 Beta5。在我的应用程序中,它可以在iOS 12及更低版本上正常运行。但是,在iOS 13上,默认情况下似乎使用的是UIScene。这导致我的应用无法执行任何操作。
当应用程序以全新安装方式启动时,用户必须接受条款和条件。同意后,他们进入加载屏幕,然后将其定向到主视图。在我发布的屏幕截图中,当前当前前景背后的视图是启动加载屏幕。
我们将很快考虑在整个应用程序中添加多视图场景支持,但是现在我们需要处理更高优先级的内容。
该应用程序目标的“常规”设置中的“支持多个窗口”已被禁用。另外,我在info.plist文件中将“启用多个Windows”设置为“否”。
到目前为止,什么都没有真正起作用。基本上我想选择退出/禁用多个窗口和UIScene / SwiftUI以恢复iOS 10-12中的原始行为。这可能在iOS 13中还是我们必须对其进行更新?
更新:
这是视图调试层次结构的屏幕截图。左侧是iOS 12,右侧是iOS13。没有在Info.plist中添加任何内容,也没有添加任何场景委托类或方法,为什么会有不同?几乎可以在Xcode 11的现有生产就绪代码中运行它。
我有一个符合@ObservableObject 协议的类,并从它创建了一个子类,它有自己的变量,带有@Published 属性包装器来管理状态。
使用子类时似乎忽略了@published 属性包装器。有谁知道这是否是预期行为以及是否有解决方法?
我正在运行 iOS 13 Beta 8 和 xCode Beta 6。
这是我所看到的一个例子。更新MyTestObjectText 视图上的 TextField 时,会使用 aString 值正确更新。如果我更新MyInheritedObjectTextField,则不会在 Text 视图中更新 anotherString 值。
import SwiftUI
class MyTestObject: ObservableObject {
@Published var aString: String = ""
}
class MyInheritedObject: MyTestObject {
@Published var anotherString: String = ""
}
struct TestObserverWithSheet: View {
@ObservedObject var myTestObject = MyInheritedObject()
@ObservedObject var myInheritedObject = MyInheritedObject()
var body: some View {
NavigationView {
VStack(alignment: .leading) {
TextField("Update aString", text: self.$myTestObject.aString) …Run Code Online (Sandbox Code Playgroud) 简单地说,我依靠以下代码来提供应用程序的方向。在应用程序中使用它有几个原因:
在这种情况下,我只是负责维护,并且无法做出偏离当前(并且正常运行)布局逻辑的重大更改。
截至目前,它依赖于以下内容来捕获应用程序方向:
var isLandscape: Bool {
return UIApplication.shared.statusBarOrientation.isLandscape
}
Run Code Online (Sandbox Code Playgroud)
但是,对于 Xcode 11 GM 版本,我收到了以下弃用警告:
'statusBarOrientation' 在 iOS 13.0 中被弃用:改用窗口场景的 interfaceOrientation 属性。
如何通过状态栏获取应用程序的方向?
在实现Apple iOS 13之后,我意识到iPad iOS 13的Safari中的window.navigator.userAgent与MacOS相同。像这样:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15
如您所见,这是iPad的错误用户代理,甚至无法检测当前设备是否为iDevice。
经过初步研究,我找到了解决方法:
转到设置-> Safari->请求桌面网站->所有网站。您会注意到默认情况下启用了 “所有网站” 。如果禁用它并获取window.navigator.userAgent,则现在将显示正确的用户代理。
但我不能要求每个用户对每个设备进行此设置更改。因此,我试图找到另一种方法,最后编写了以下代码,检查它是否是Safari,macOS和触摸屏,然后该设备应该是苹果移动设备,但是我想知道是否有更好的建议/方法在Safari iOS 13中检测到正确的设备名称?
detectOs = function(){
//returns OS name, like "mac"
};
//is Safari on an apple touch-screen device
isSafariInIdevice = function(){
if (/Safari[\/\s](\d+\.\d+)/.test(windows.navigator.userAgent)) {
return 'ontouchstart' in window && detectOs() === "mac";
}
return false;
};
Run Code Online (Sandbox Code Playgroud) 我试图将SubView SwiftUI 视图添加到UIView。 self.view.addSubview(contentView)
错误:无法将“ContentView”类型的值转换为预期的参数类型“UIView”
请帮我实现这个 UI。
import UIKit
import SwiftUI
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.backgroundColor = UIColor.lightGray
let contentView = ContentView()
view.addSubview(contentView) // Error: Cannot convert value of type 'ContentView' to expected argument type 'UIView'
}
}
struct ContentView: View {
var body: some View {
Text("Hello world")
}
}
Run Code Online (Sandbox Code Playgroud) 在Xcode-11-Beta(ios13)之前,以下代码用于自定义searchbar值以获取使key正常工作的键值。现在低于崩溃日志。
'NSGenericException',原因:'禁止访问UISearchBar的_searchField ivar。这是一个应用程序错误”
- (UITextField *)textField
{
return [self valueForKey:@"_searchField"];
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
ios13 ×10
ios ×5
swift ×4
swiftui ×4
xcode ×2
xcode11 ×2
contextmenu ×1
inheritance ×1
javascript ×1
objective-c ×1
safari ×1
testflight ×1
uikit ×1
uisearchbar ×1
user-agent ×1