Hello Apple Developer Support,
I am writing to seek assistance with an issue we are experiencing in our SwiftUI application concerning UI test cases.
Our application uses accessibility labels that differ slightly from the display content to enhance VoiceOver support. However, we have encountered a problem where our UI test cases fail when the accessibility label does not match the actual display content.
Currently, we are using accessibility identifiers in our tests, but they only retrieve the accessibility label, leaving us without a method to access the actual display content. This discrepancy is causing our automated tests to fail, as they cannot verify the visual content of the UI elements.
We would greatly appreciate any guidance or solutions you could provide to address this issue. Specifically, we are looking for a way to ensure our UI tests can access both the accessibility label and the actual display content for verification purposes.
For ex:
Problem scenario - setting accessibilityLabel masks access to any displayed content
If an accessibilityLabel is set on a UI element, then it seems to be no-longer possible to check/access the displayed content of that element:
var body: some View {
Text("AAA")
.accessibilityIdentifier("textThing")
.accessibilityLabel("ZZZ") // Different label from the text which is displayed in UI
}
// in test...
func test_ThingExists() {
XCTAssert(app.staticTexts["AAA"].exists) // Fails, cannot find the element
XCTAssertEqual(app.staticTexts["ZZZ"].label, "AAA") // Fails - '.label' is the accessibilityLabel, not the displayed content
XCTAssertEqual(app.staticTexts["ZZZ"].label, "ZZZ") // Passes, but validates the accessibility content, not the displayed content
XCTAssert(app.staticTexts["textThing"].exists) // Passes, but does not check the displayed content
XCTAssertEqual(app.staticTexts["textThing"].label, "AAA") // Fails - '.label' is the accessibilityLabel, not the displayed content
XCTAssertEqual(app.staticTexts["textThing"].label, "ZZZ") // Passes, but validates the accessibility content, not the displayed content
}
element.label still only checks the accessibilityLabel. There is not, it seems, an way back to being able to check the content of the Text element directly.
Thank you for your attention and support. We look forward to your valuable insights.
Dive into the vast array of tools, services, and support available to developers.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I upgraded xcode to 16.2 and found that the txt file generated by Write Link Map File is different from before, no longer containing detailed data. So, how to set it up to obtain the same link map file as the previous xcode version.
# Path: /Users/....../xxx.app/__preview.dylib
# Arch: arm64
# Object files:
[ 0] linker synthesized
# Sections:
# Address Size Segment Section
0x00004000 0x00000000 __TEXT __text
# Symbols:
# Address Size File Name
Topic:
Developer Tools & Services
SubTopic:
Xcode
When is my Dev account activated? I just paid the developer membership.
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
I tried \s+$ to find trailing spaces, but it seems the IDE code editor behaves strangely - it locates random lines that obviously has no trailing spaces.
Did I misunderstand regex in the editor?
You closed my 5-year-old account without any question, without any violation of the rules. You haven't even bothered to respond in 2 months.
I will seek my rights in every way and complain about you on all platforms.
I have never violated anything so far.
I am suing you, you have caused me a lot of damage in the last 2 months.
I have made a lot of investments.
You are a disgraceful, lousy company!
I will never recommend Apple to anyone from now on!
Rude, immoral company. You closed an account for no reason!
You are doing this on purpose to pave the way for big companies.
You are a vile and disgraceful company!
No response for 2 months. Account closure without reason. I will announce you everywhere, see you in court
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Hello fellow Techies!
I am currently doing the Swift Playgrounds “Keep Going with Apps” on my iPad Pro. Everything has been going as designed until I got to the ‘Add and Delete Creatures‘ module. The lesson concludes with being able to add a creature to your list in the CreatureZoo. When you run the app from the playground, you can fill out the fields and tap ‘Add’ and that is when the app dims and after 5 seconds I get the notification that the app has an unknown crash. I have reviewed the lessons leading up to it, but I can’t find anything wrong. (Full Disclosure: I really have no clue what I am looking at some of time.)
Has anyone else ran into this?
`import SwiftUI
import Guide
struct CreatureEditor: View {
//#-learning-code-snippet(defineVariablesCreatureEditor)
//#-learning-code-snippet(environmentValue)
@State var newCreature : Creature = Creature(name: "", emoji: "")
@EnvironmentObject var data : CreatureZoo
@Environment(.dismiss) var dismiss
var body: some View {
SPCAssessableGroup(view: self) {
VStack(alignment: .leading) {
Form {
Section("Name") {
//#-learning-code-snippet(addACreatureEditorTextField)
TextField("What is your monster's name?", text: $newCreature.name)
}
Section("Emoji") {
TextField("What does your monster look like?", text: $newCreature.emoji)
}
Section("Creature Preview") {
CreatureRow(creature: newCreature)
}
}
}
.toolbar {
ToolbarItem {
Button("Add") {
data.creatures.append(newCreature)
dismiss()
}
}
}
//#-learning-code-snippet(addButtonToToolbar)
}
}
}
struct CreatureEditor_Previews: PreviewProvider {
static var previews: some View {
NavigationStack() {
CreatureEditor().environmentObject(CreatureZoo())
}
}
}’
I can't get my app's logo to show in the "About" box nor in the app switcher.
I have:
created "Assets.xcassets"
created "AppIcon"
added 10 image files of the logo to the AppIcon image well [? right terminology ?]
saved and built the project – there are no errors or warnings
When I run the project, I still get the default image showing in the About box and in the app switcher.
Because first attempt failed, I changed "applet" to "AppIcon" in "App Icons and Launch Screen" in "General" settings. That did not change the result. I also toggled "Include all app icon assets" which also did not change the result.
Weirdly, my app's logo DOES show beside the app name in every item of "Build Settings".
Do I need to do something else to change the default image in the "About" box ?
Thanks.
[Xcode 16.2 on macOS 15.3.2.]
Since upgrading from Xcode 15 to 16, we have been experiencing a build error during compilation. Building on Xcode 15 still works with no issues. The error happens only on the first build after a clean. Subsequent builds succeed. This is an issue because our CI process archives the project from a clean slate, and this causes it to fail every time. I will attempt to describe the issue and include information I believe is relevant in this document.
The error occurs on this import line within an Objective-C file during the Scan Dependencies step of compiling. This line imports our custom Objective-C to Swift bridging header file - "Swift2Objc.h".
Our custom Objective-C to Swift bridging header file is simply wrapping the project’s auto-generated Objective-C to Swift bridging header file - "KWISwift.h".
The error is specific to the import of the OfflineServices Swift Package.
Specifically, the OfflineServices-Swift.h file - the Swift Package’s auto-generated Objective-C to Swift bridging file.
Module JRE not found - the exact error (Also included as text on the bottom of the post)
JRE is a third-party library provided to us as an xcframework. It is placed directly into our Swift Package as a binary target.
The xcframework itself is composed of .a file and a Headers folder which includes header files and a module.modulemap.
The module.modulemap file looks like this.
I am currently developing an Apple MDM solution as a vendor and have successfully obtained the Vendor Certificate from the Apple Developer Portal. However, when attempting to generate and upload the Certificate Signing Request (CSR) to the Apple Push Certificates Portal Portal Link. I encounter the error: "Invalid Certificate Signing Request."
I have followed the official Apple documentation outlined here, but the issue persists. Doc Link
Could you please guide me through the correct process to generate a valid CSR and successfully upload it? Any assistance would be greatly appreciated.
Thank you for your time and support.
I want to release a Framework F, containing several other frameworks (such as Realm, Appetitive, Cocoalumberjack, PhoneNumberKit) for use by app A.
According to this article: https://medium.com/@bittudavis/how-to-create-an-umbrella-framework-in-swift-ca964d0a2345
They write, without referencing a source: "Although Apple discourage creating umbrella framework".
Is that true, do Apple discourage umbrella frameworks, if so why and is it a very strong discourage or a mild one?
If not discouraged, then how can this be achieved with Xcode 16?
I've been attempting to follow a few tutorial to achieve this, such as https://medium.com/john-lewis-software-engineering/adding-a-third-party-framework-inside-a-first-party-framework-in-xcode-3ba58cfd08da
however so far without any success. This last article mentions the Link Binary With Libraries section, which doesn't exist in Xcode 16.
There's the Frameworks, Libraries, and Embedded Content section where I have been attempting to add the frameworks into my Framework F (choosing Embed without Signing).
I'm able to successfully build Framework F, but when app A attempts to use it (adding F to the Frameworks, Libraries, and Embedded Content section with option embed and sign, or embed and don't sign, makes no difference) then I get run time errors about the umbrellaed frameworks not being able to be found.
I work on an iOS app, written in Objective-C and C++, that uses a static library. I build this library using a Run Script in Build Phases in Xcode. This is a fat library, containing arm64 code built for iPhoneOS, and x86_64 code built for iPhoneSimulator.
I'm trying to figure out how to create an arm64 iPhoneSimulator build of my app, and I'm running into a problem. If I simply enable arm64 debug builds, I get an error message saying "building for iOS Simulator, but linking in object file built for iOS", indicating that the arm64 iPhoneOS code in the library is not compatible with an arm64 iPhoneSimulator target.
Now, I can build the library as arm64 for iPhoneSimulator, but that means I'll have to build a separate library for the simulator build, since lipo won't combine arm64 iPhoneOS and arm64 iPhoneSimulator builds in one file.
My question: how can I get Xcode to link with a different library for iPhoneSimulator builds than for iPhoneOS builds? All I can come up with is to use completely separate targets for debugging in the simulator vs. debugging on a real device, but that seems ugly.
(It would be even better if I could use the same library for both arm64 iPhoneSimulator and iPhoneOS builds. The library in question is a math library which makes no system calls, so I think the same code should be usable for both builds, if only I could get the linker to allow that.)
Not sure if this is common with releases but I've been doing some CI work recently so it's the first time I've seen this myself,
When I list the runtimes installed on my machine:
xcrun simctl list runtimes
I notice the iOS 18.3.1 release has the below info:
== Runtimes ==
iOS 18.3 (18.3.1 - 22D8075) - com.apple.CoreSimulator.SimRuntime.iOS-18-3
Meanwhile the other runtimes are listed as:
== Runtimes ==
iOS 17.5 (17.5 - 21F79) - com.apple.CoreSimulator.SimRuntime.iOS-17-5
iOS 18.4 (18.4 - 22E5216h) - com.apple.CoreSimulator.SimRuntime.iOS-18-4
watchOS 11.2 (11.2 - 22S99) - com.apple.CoreSimulator.SimRuntime.watchOS-11-2
visionOS 2.3 (2.3 - 22N895) - com.apple.CoreSimulator.SimRuntime.xrOS-2-3
(Apologies for the weird formatting above, using code blocks and quote markdown condenses things down to one line for some reason)
This is causing some funkiness in my CI code which I've managed to workaround, but wondered if this was a common thing, specifically the mismatch between the iOS name and the runtime version.
iOS 18.3 and com.apple.CoreSimulator.SimRuntime.iOS-18-3 vs 18.3.1 - 22D8075 where the .1 has been dropped for the runtime names?
I created a package using "File > New > Package" and now I want to add a new Asset Catalog to this package. With my package selected in the project navigator I select "File > New > File" but it creates a Swift file instead of showing the Template Selection dialog
Ref: https://developer.apple.com/documentation/xcode/managing-assets-with-asset-catalogs#Create-a-new-asset-catalog
Gradients with colors that have alpha are not rendered correctly anymore. I made a simple project to illustrate that. Just create Objective C project and paste this code inside the ViewController.
`#import <UIKit/UIKit.h>
@interface CustomView : UIView
@property (nonatomic, strong) NSArray<NSNumber *> *colorsArray; // The color components array
// Custom initializer that accepts an NSArray of color components
(instancetype)initWithFrame:(CGRect)frame colors:(NSArray<NSNumber *> *)colorsArray;
@end
@implementation CustomView
// Custom initializer
(instancetype)initWithFrame:(CGRect)frame colors:(NSArray<NSNumber *> *)colorsArray {
self = [super initWithFrame:frame];
if (self) {
_colorsArray = colorsArray; // Store the colors array
}
return self;
}
(void)drawRect:(CGRect)rect {
// Get the current context
CGContextRef context = UIGraphicsGetCurrentContext();
// Convert NSArray to a C-style array of CGFloats
size_t count = self.colorsArray.count;
CGFloat colors[count];
for (size_t i = 0; i < count; i++) {
colors[i] = [self.colorsArray[i] floatValue];
}
// Create a color space
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
// Create the gradient with the passed colors
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, NULL, count / 4);
// Define the start and end points of the gradient
CGPoint startPoint = CGPointMake(rect.origin.x, rect.origin.y);
CGPoint endPoint = CGPointMake(rect.origin.x, rect.origin.y + rect.size.height);
// Draw the rectangle with the gradient
CGContextSaveGState(context);
CGContextAddRect(context, rect);
CGContextClip(context);
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGContextRestoreGState(context);
// Release resources
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
}
@end
@interface ViewController : UIViewController
@end
@implementation ViewController
(void)viewDidLoad {
[super viewDidLoad];
// Get the screen bounds
CGRect screenBounds = [UIScreen mainScreen].bounds;
// Define the size of each custom view
CGFloat customViewWidth = screenBounds.size.width * 0.75;
CGFloat customViewHeight = screenBounds.size.height * 0.75;
// Define a dynamic set of colors for the first custom view (red to blue)
NSArray<NSNumber *> *colorsArray1 = @[
@1.0, @0.0, @0.0, @1.0, // Red
@0.0, @0.0, @1.0, @1.0 // Blue
];
// TODO: This is the bug, there is no transparency
NSNumber *alpha = @0.0;// this is the ***** bug ****
// Define a dynamic set of colors for the second custom view (green to yellow)
NSArray<NSNumber *> *colorsArray2 = @[
@0.0, @1.0, @0.0, alpha, // Green
@1.0, @1.0, @0.0, @1.0 // Yellow
];
// Calculate the position for the first view (centered horizontally and vertically, with slight offset)
CGRect frame1 = CGRectMake((screenBounds.size.width - customViewWidth) / 2 - customViewWidth * 0.25,
(screenBounds.size.height - customViewHeight) / 2 - customViewHeight * 0.25,
customViewWidth, customViewHeight);
CustomView *customView1 = [[CustomView alloc] initWithFrame:frame1 colors:colorsArray1];
// Calculate the position for the second view (slightly shifted from the first view to partially overlap)
CGRect frame2 = CGRectMake((screenBounds.size.width - customViewWidth) / 2 + customViewWidth * 0.25,
(screenBounds.size.height - customViewHeight) / 2 + customViewHeight * 0.25,
customViewWidth, customViewHeight);
CustomView *customView2 = [[CustomView alloc] initWithFrame:frame2 colors:colorsArray2];
// Set autoresizing so they adjust with the screen size
customView1.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
customView2.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// Add the custom views to the view controller's view
[self.view addSubview:customView1];
[self.view addSubview:customView2];
}
@end`
Is anyone else having trouble with the Documentation in the latest Xcode beta? I can't get any UIKit documentation to appear. UIKit is completely missing from the table of contents too. I've tried deleting the documentation caches but it isn't helping.
Topic:
Developer Tools & Services
SubTopic:
Xcode
I want to build an ios .xcframework (for external delivery) and .framework(for internal debugging) in order to package some code to a customer for incorporation into their app.
My framework has a dependency upon RealmSwift, which I've added using SPM.
There is a warning saying
Module RealmSwift was not compiled with library evolution support.
And when building SwiftVerifyEmittedModuleInterface fails with an error saying
"missing required modules: 'Realm.Private', 'Realm', 'Realm.Swift'"
By default, Build Libraries For Distribution was set to YES, however if I turn it off then the warning and error go away and I can cleanly build the framework.
I've been attempting to get a good understanding of this flag and if it should be used or not, most material says yes but doesn't go a good job of explaining why.
However anyway I can't get the framework to build with RealmSwift as a dependency without turning off this flag. Therefore is that ok to proceed down that route?
Does the fact the xcframework will only ever be distributed to one consumer affect decisions (i.e. binary compatibility etc.)
Thanks
I've used SPM to install some dependencies, however for one of them, CocoaLumberjackSwift the Embed section is blank and attempting to click in it doesn't brink up any dropdown menuetc.
Why is that, how can I change it or check what its set to if its blank?
(Code 16.2)
My team has reached the maximum number of registered iPhone devices on our profile and would like to reset the list to remove those that are no longer valid. Currently, our reset date in the developer portal shows March 22nd as the earliest date for a reset. Is it possible to request an earlier reset date?
Thanks
does anyone know where to find some slideshow/text/pdf versions of these?
https://developer.apple.com/tutorials/swiftui
maybe apple can use that fancy AI they are working on to generate those from the vides... to stress-test the AI :)
Topic:
Developer Tools & Services
SubTopic:
General
It is not working properly. What should I do?