Posts

Post not yet marked as solved
10 Replies
9.7k Views
Hello, I'm trying to remove the current back button behavior in a navigation view and instead have a simple arrow. Disabling the button with navigationBarBackButtonHidden and then adding my own with navigationBarItems works, but then I lose the swipe gesture to go back. I could try to rebuild this swipe gesture, but that seems hard to get the same feel, and it will most likely break often. Is there something simpler ? I'd be satisfied with just removing the text of the back button and keeping only the <. Thanks
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
1 Replies
1.3k Views
Hello, Using iOS 17.0, I can see a list of available voices. However, some will just not work, meaning that when selected there will be no sound produced and no errors. This is true when using my app and AVSpeechUtterance, but it is also true in the settings where the preview button does nothing.
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
1 Replies
1.3k Views
Hello, It seems like AVSpeechSynthesisVoice.speechVoices() now returns [] instead of a list of voices, and which means that no speechVoices are available. This leads to the impossibility to do any speech synthesis using iOS 16. Is anyone else experiencing this? Have you found a way to address it? Thanks
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
0 Replies
887 Views
Hello, Since iOS 16 AVSpeechSynthesisVoice.speechVoices() returns [] by default. Based on what I understood so far, this seems to be because iOS 16 doesn't come bundled with voices, unlike all previous versions. This leads to the impossibility to do any speech synthesis using iOS 16 without asking users to go out of the app and download voices manually, meaning a significant barrier to entry and poor UX. Does anyone know a workaround?
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
5 Replies
2.5k Views
Hello, In my iOS app most users can hear the AVSpeechSynthesisVoice correctly, but some report that it simply does not work. I haven't been able to reproduce the issue locally, but here is how I use the API: let sentence = "the sentence to be told" let synthesizer = AVSpeechSynthesizer() let utterance = AVSpeechUtterance(string: sentence) utterance.voice = AVSpeechSynthesisVoice( &#9;language: "en-GB" ) utterance.rate = AVSpeechUtteranceDefaultSpeechRate * 1.05 synthesizer.speak(utterance) This works perfectly fine on iOS 13 (tested most minors), all iOS 14 versions, all the devices I could find... but I keep getting reports of people not getting any audio feedback. Do you have any pointers on where to look, or at least reproduce the issue? Thanks
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
1 Replies
1.1k Views
Hello, I'm fairly new to iOS development, and I'm now seeing that while users are using iOS 14.2 in production, it is still not available via Xcode. This of course means I can't fix their bugs nor build for these devices. I could download the Xcode RC, but then what if it's not stable? Also it seems to require 30GB+ to install Is this normal behavior from Apple ? When will Xcode 12.2 be released ? Thanks
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
0 Replies
609 Views
Hello, I'm using requestReview() to ask users to review my app, but it only shows a way to rate the app from 1 to 5 stars... no option to write a review. Because of this I start to have a lot of ratings but no reviews. I see other apps linking to the app store with an action=write-review, but it seems to be discouraged by Apple and the documentation - https://developer.apple.com/documentation/storekit/skstorereviewcontroller/2851536-requestreview is indicating that requestReview() should work for this use case: Tells StoreKit to ask the user to rate or review your app, if appropriate. How can I ask for an actual review? Thanks !
Posted
by MGG9.
Last updated
.
Post marked as solved
2 Replies
634 Views
Hello, I've been asking questions related to layout and UI, and not being able to share a link or a file makes it really hard to explain the issue. Is there a preferred way to do it? Thanks
Posted
by MGG9.
Last updated
.
Post marked as solved
1 Replies
5.7k Views
Ever since updating to iOS 14, I get additional padding in my List that I didn't see on iOS 13. I also see this on my Form. Is this a known issue of iOS 14 ? How can I fix this ? var body: some View { &#9;&#9;&#9;&#9;NavigationView { &#9;&#9;&#9;&#9;&#9;&#9;VStack(alignment: .leading){ &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;List { &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; // Content goes here &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; // Mostly text and buttons &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;} &#9;&#9;&#9;&#9;&#9;&#9;}.navigationBarTitle(Text("settings.title"), displayMode: .inline) &#9;&#9;&#9; } } I can't attach a screenshot or link to a service displaying images on this forum, but you can see the visual result here: https://stackoverflow.com/questions/64168107/how-to-remove-new-list-padding-that-appeared-on-ios14
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
0 Replies
575 Views
Hello, After building my SwiftUI for iOS 14 I've noticed that a lot of alignments were broken in the lists - https://developer.apple.com/forums/thread/662544, but also in forms. Now each section seems to be in a rectangle with rounded corners and extra padding. It looks great on devices with large screens, but on smaller screens everything is cluttered and there is barely any space to display the content. Is this a known change in the default UI? Can I revert back to the way it was in iOS13? Thanks!
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
0 Replies
1.3k Views
Hello, I am fairly new to Swift development and I'm encountering a live crash that I can't figure out. Any pointers on how to even figure this one out would be appreciated because I can't reproduce the bug locally. A simplified version of my code looks like this: struct LinkItem: View { &#9;&#9;var content: LocalizedStringKey // This is the line crashing (SettingsView.swift:7) &#9;&#9;var body: some View { &#9;&#9;&#9;&#9;Text(content) &#9;&#9;} } And the only place where I call this view is here in my SettingsView: LinkItem(content: "settings.tos") LinkItem(content: "settings.pp") LinkItem(content: "settings.sc") and in my string file I have: "settings.tos" = "Terms of service"; "settings.pp" = "Privacy policy"; "settings.sc" = "Support & contact"; Finally here is the data from crashlytics: Crashed: com.apple.main-thread 0&#9;SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bde98bd0 ViewRendererHost.render(interval:updateDisplayList:) + 560 1&#9;SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1be003f94 _UIHostingView.layoutSubviews() + 168 2&#9;SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1be003fc0 @objc _UIHostingView.layoutSubviews() + 24 3&#9;UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18b6a73d0 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2140 4&#9;QuartzCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18dc0a7dc -[CALayer layoutSublayers] + 284 5&#9;QuartzCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18dc10958 CA::Layer::layout_if_needed(CA::Transaction*) + 480 6&#9;UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18b693684 -[UIView(Hierarchy) layoutBelowIfNeeded] + 536 7&#9;UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18ab69358 -[UINavigationController _layoutViewController:] + 1188 8&#9;UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18ab63210 -[UINavigationController _layoutTopViewControllerLookForNested:] + 604 9&#9;UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18ab65074 -[UINavigationController _performWhileIgnoringUpdateTopViewFramesToMatchScrollOffset:] + 48 10 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18ab652f8 -[UINavigationController _performTopViewGeometryUpdates:] + 112 11 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18ab651c4 -[UINavigationController _updateTopViewFramesToMatchScrollOffsetInViewController:contentScrollView:topLayoutType:] + 244 12 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18ab64e14 -[UINavigationController _updateTopViewFramesForViewController:isCancelledTransition:isOrientationChange:] + 236 13 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18ab725b8 -[UINavigationController _navigationBarChangedSize:] + 392 14 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18a91fdf0 -[UINavigationBar _sendNavigationBarResize] + 76 15 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18a9689d8 -[_UINavigationBarVisualProviderModernIOS changeLayout] + 80 16 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18a9714f8 -[_UINavigationBarVisualProviderModernIOS navigationItemUpdatedLargeTitleDisplayMode:] + 180 17 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18a9246b0 -[UINavigationItem setLargeTitleDisplayMode:] + 64 18 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bdd0cf48 UINavigationItem.update(using:environment:navController:) + 320 19 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bdb02d78 UIKitNavigationBridge.preferencesDidChange(_:) + 544 20 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bda979d0 _UIHostingView.preferencesDidChange() + 436 21 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bdb82e60 ViewGraph.updateOutputs(at:) + 176 22 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bdea3844 closure #1 in closure #1 in ViewRendererHost.render(interval:updateDisplayList:) + 960 23 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bdea32ac closure #1 in ViewRendererHost.render(interval:updateDisplayList:) + 576 24 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1bde98b30 ViewRendererHost.render(interval:updateDisplayList:) + 400 25 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1be003f94 _UIHostingView.layoutSubviews() + 168 26 SwiftUI&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x1be003fc0 @objc _UIHostingView.layoutSubviews() + 24 27 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18b6a73d0 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2140 28 QuartzCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18dc0a7dc -[CALayer layoutSublayers] + 284 29 QuartzCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18dc10958 CA::Layer::layout_if_needed(CA::Transaction*) + 480 30 QuartzCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18dc1b578 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 136 31 QuartzCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18db63f1c CA::Context::commit_transaction(CA::Transaction*, double) + 304 32 QuartzCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18db8dc08 CA::Transaction::commit() + 676 33 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18b228e58 __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 80 34 CoreFoundation&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18711c834 CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK + 20 35 CoreFoundation&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x18711bfd4 __CFRunLoopDoBlocks + 264 36 CoreFoundation&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x187117250 __CFRunLoopRun + 1100 37 CoreFoundation&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x187116adc CFRunLoopRunSpecific + 464 38 GraphicsServices&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x19109c328 GSEventRunModal + 104 39 UIKitCore&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x18b211ae0 UIApplicationMain + 1936 40 MY APP&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; 0x1041b6de4 main + 7 (SettingsView.swift:7) 41 libdyld.dylib&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;0x186fa0360 start + 4 I've then tried to change the code to pass a String, but I'm getting the exact same crash. struct LinkItem: View { &#9;&#9;var content: String &#9;&#9;var body: some View { &#9;&#9;&#9;&#9;Text( NSLocalizedString(content, comment: "")) &#9;&#9;} } It was later pointed out to me that it could be related to UINavigationItem setLargeTitleDisplayMode. Here is what I do in the SettingsView: .navigationBarTitle(Text("settings.title"), displayMode: .inline) In context, it's more or less: var body: some View { &#9;NavigationView { &#9;&#9;VStack(alignment: .leading){ &#9;&#9;&#9;// Most content &#9;&#9;}..navigationBarTitle(Text("settings.title"), displayMode: .inline) &#9;} } In my ContentView I have the following things in my init call: init() { &#9;UINavigationBar.appearance().isTranslucent = false &#9;UINavigationBar.appearance().titleTextAttributes = [ &#9;&#9;.foregroundColor: Color.appDark.uiColor(), &#9;&#9;.font : UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.bold) &#9;] }
Posted
by MGG9.
Last updated
.
Post not yet marked as solved
0 Replies
1.3k Views
Hello, When recently updating to the latest xcode, all my UISwitch changed to use the default color. Basically it means that this doesn't seem to work anymore: UISwitch.appearance().onTintColor = Color.red I can't find a reference to any change. Thanks
Posted
by MGG9.
Last updated
.