The popup window triggered by IntentConfiguration is not functioning on the lock screen of iOS Beta 2.
Widgets on the home screen work normally.
Test Device
iPad Simulator : 18.0 (22A5297f)
iPhone Simulator : 18.0 (22A5297f)
iPad Pro 2 : 18.0 (22A5297f)
Post
Replies
Boosts
Views
Activity
When I run the following code on my iPad and select an item in the sidebar, the ToolbarItem button shows up, but when I go to the home screen and return to the app, the ToolbarItem button disappears.
struct ContentView: View {
@State var selection: Int? = nil
var body: some View {
NavigationSplitView {
List(selection: $selection) {
ForEach(0...10, id: \.self) { value in
NavigationLink(value: value) {
Text("\(value)")
}
}
}
} detail: {
ZStack {
Text("Select : \(selection ?? -1)")
}
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Button {
} label: {
Text("ToolbarItem")
}
}
}
}
}
}
ColorPicker has a bug in XCode 15 beta 8.
There is an issue where ColorPicker pop-up window layout is pushed to the left.
You cannot even select a color in the ColorPicker pop-up window where the problem occurred.
After checking, it does not occur on most iPads and iPhones.
For iPhone SE2 and SE3, problems occur with both the device and the simulator.
XCode 15.0 beta 8 (15A5229m)
iOS 17.0 (21A5326a)
If you update the code using @Observable, it works normally on macOS, but an error occurs on iPad.
Simultaneous accesses to 0x60000300c9a0, but modification requires exclusive access.
The first time I select it from the list, it works fine, but the second time I select it, an error occurs.
original source code
struct ContentView: View {
@StateObject private var envProfile = ProfileEnvironment()
var body: some View {
NavigationSplitView {
List(selection: $envProfile.selection) {
NavigationLink("One", value: "1")
NavigationLink("Two", value: "2")
}
} detail: {
Text(envProfile.selection ?? "nil")
}
}
}
class ProfileEnvironment: ObservableObject {
@Published var selection : String?
}
Updated code using @Observable
struct ContentView: View {
@State private var envProfile = ProfileEnvironment()
var body: some View {
NavigationSplitView {
List(selection: $envProfile.selection) {
NavigationLink("One", value: "1")
NavigationLink("Two", value: "2")
}
} detail: {
Text(envProfile.selection ?? "nil")
}
}
}
@Observable
class ProfileEnvironment {
var selection : String?
}
Run the attached source on the iPad.
Rotate your iPad in landscape orientation.
Select one of 1,2,3 from the list on the left.
Press the Home button to exit to the home screen.
You can check that the "selectedID" value is initialized after the app enters the background state.
When I go back to the app I was running, the selected row in the list is cancelled.
Proceed with the same action once more.
In the second process, the "selectedID" value is not initialized.
The "selectedID" value is always initialized on the first run.
I would like to know how to deal with this problem.
import SwiftUI
struct ContentView: View {
@Environment(\.scenePhase) var scenePhase
@State var selectedID: UUID?
let profiles = [Profile(name: "1"), Profile(name: "2"), Profile(name: "3")]
var body: some View {
NavigationSplitView {
List(profiles, id: \.id, selection: $selectedID) { profile in
NavigationLink(value: profile.id) {
Text(profile.name)
}
}
} detail: {
Text(selectedID?.uuidString ?? "nil")
}
.task(id: selectedID) {
print("Selection changed to \(selectedID?.uuidString ?? "nil")")
}
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
print("Active :", selectedID ?? "nil")
} else if newPhase == .inactive {
print("Inactive :", selectedID ?? "nil")
} else if newPhase == .background {
print("Background :", selectedID ?? "nil")
}
}
}
}
struct Profile: Identifiable, Hashable {
let id = UUID()
let name: String
}
Normal behavior in apps and widgets : [.date, .time]
Use "multilineTextAlignment" on widgets : [.relative, .offset, .timer]
As of iOS 16.0 (20A5358a), ".timer" does not work in widgets and does not alignment.
There was a problem that the Timer was not aligned in the widget for a long time.
I thought this bug would be fixed someday, but one more bug was added.
This is a really disappointing result.
struct WZEntryView : View {
var entry: Provider.Entry
var body: some View {
VStack(alignment: .trailing) {
Text(entry.date, style: .date)
Text(entry.date, style: .time)
Text(entry.date, style: .relative)
Text(entry.date, style: .offset)
Text(entry.date, style: .timer) //<- not work on iOS 16.0 (20A5358a) widget
}
.multilineTextAlignment(.trailing) // Bypass bugs in widgets
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
.background(Color.gray)
}
}
[Test environment]
macOS : 13.0 (22A5331f)
XCode : 14.0 beta 6 (14A5294g)
iOS : 16.0 (20A5358a)
XCode : 14.0 beta 4 (14A5284g)
Simulator : iPhone 13 - 16.0 (20A5328h)
I am developing a lock screen widget.
In xcode beta 3, the lock screen widget worked normally.
In beta 4, the edit mode of the lock screen does not work.
There is a problem that the size of the wallpaper image sometimes changes when turning the iPhone on and off.
This problem occurs frequently every week and is irregular.
macOS : 13.0 beta (22A5321d)
XCode : 14.0 beta 5 (14A5294e)
iOS : 16.0 (20A5339d)
iPhone SE2
I am developing a multi-platform app.
Added a package that imports UIKit to the project under development.
Changed "Allow any platform" to "iOS" in the framework settings of the project.
In the source using the library, "#if os(iOS)" is applied to iOS only.
The project compiles without errors on iOS and macOS and runs normally.
It works normally in the preview canvas of iOS.
The preview canvas on macOS throws a UIKit error in the library.
With just a few lines of code you can check this error.
[Package]
import UIKit <--------
public struct MyLibrary {
public private(set) var text = "Hello, World!"
public init() {
}
}
[Project]
import SwiftUI
#if os(iOS) <---------------
import MyLibrary
#endif
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Execute the code below in iPad landscape mode.
Go to the home screen and launch another app.
When you return to the app again, you can see that the layout of the left menu is wrong.
This doesn't happen every time, but it does happen about 80% of the time.
As a first aid, if you specify .frame(width: 320) in the List, the problem no longer occurs.
Please let me know if you have a solution
macOS : 12.1 Beta (21C5031d)
XCode : Version 13.1 (13A1030d)
iPad : 15.2 (19C5036e)
struct ContentView: View {
var body: some View {
NavigationView {
List {
ForEach(1...9, id: \.self) { item in
NavigationLink("\(item)") {
Text("\(item)")
}
}
}
}
}
}
The code below works normally on macOS Big Sur.
However, after compiling with Xcode 13 and running in Monterey, an error occurs.
This is an issue with "toolbar".
If I comment out the toolbar part of ProfileView, it works without error.
What part is wrong? Or is it a bug in Xcode13?
If the way you use the toolbar changes in the future, please let me know the correct way.
PLATFORM AND VERSION
macOS Monterey 12.0 beta (21A5506j)
Xcode 13.0 beta 5 (13A5212g)
STEPS TO REPRODUCE
Run Xcode 13.0 beta 5
Create macOS project
Paste the above code into ContentView & ProfileView.
Run debug
Error when selecting "Profile 1" from the list
struct ContentView: View {
var body: some View {
NavigationView {
ScrollViewReader { scrollProxy in
List {
ForEach([1,2,3], id: .self) { id in
NavigationLink("Profile (id)", destination: ProfileView())
}
}
.navigationTitle("Profile List")
.toolbar {
ToolbarItemGroup(placement: .confirmationAction, content: {
Button(action: {
print("Settings...")
}) {
Image(systemName: "gearshape.fill")
}
Button(action: {
NSApp.keyWindow?.firstResponder?.tryToPerform(#selector(NSSplitViewController.toggleSidebar(_:)), with: nil)
}, label: {
Image(systemName: "sidebar.left")
})
})
}
}
}
}
}
struct ProfileView: View {
var body: some View {
ZStack {
VStack {
Text("ProfileView")
}
}
.toolbar {
ToolbarItemGroup(placement: .confirmationAction, content: {
Button("Save", action: {
print("Save...")
})
})
}
}
}