iOS is the operating system for iPhone.

Posts under iOS tag

200 Posts

Post

Replies

Boosts

Views

Activity

Content overlapping address bar after clicking links in Safari with the one-tab bar enabled
Title: Content Overlapping Address Bar After Clicking Links in Safari, tested on iPhone 11 (iOS 18.1.1) Description: When browsing in Safari on iPhone (iOS 18.1.1), the one-tab bar (address bar) collapses as expected when scrolling down a page. However, after clicking on a link and loading the next page, the content appears to overlap the collapsed address bar. This results in parts of the content being hidden or obscured by the address bar, which affects the user experience, especially on mobile devices with limited screen space. This issue is reproducible on Next.js applications and can be observed on websites such as rotterdam.nl and halderberge.nl. Steps to Reproduce: Enable the One-Tab Bar: Go to Settings > Safari and enable the one-tab bar feature. Open the website rotterdam.nl or halderberge.nl in Safari on an iPhone 11 (iOS 18.1.1). Scroll down the page so that the top address bar collapses. Click on any link on the page to load a new one. Once the new page loads, observe that the content appears on top of the collapsed address bar, causing parts of the content to be hidden or obscured. Expected Result: The content should not overlap or be hidden behind the collapsed address bar after the page reloads. The layout should adjust properly without interference from the address bar, providing a smooth user experience. Actual Result: When the new page loads, the content overlaps or appears on top of the collapsed address bar, causing parts of the content to be hidden or obscured. Device(s) Affected: iPhone 11 running iOS 18.1.1. OS Version: iOS 18.1.1 Technical Notes: To address this issue, the following solutions have been attempted with no success: Viewport Meta Tag: <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> This was added to help ensure proper layout on mobile devices, but did not resolve the issue. CSS Safe Area Insets: body { padding-top: env(safe-area-inset-top); } This CSS rule was applied to account for the safe area and prevent content from being hidden under the address bar, but it did not solve the overlapping issue. Scroll Position Adjustment (for scroll-to-top button): Adjusting the scroll behavior by changing the scroll position to {top: 1} instead of {top: 0} was a successful workaround to keep the address bar collapsed when clicking the "scroll to top" button. However, this did not resolve the issue when navigating between pages or changing routes, where the content still overlaps the collapsed address bar.
0
2
538
Feb ’25
Observe currentEDRHeadroom for changes
Is there a way to observe the currentEDRHeadroom property of UIScreen for changes? KVO is not working for this property... I understand that I can query the current headroom in the draw(...) method to adapt the rendering. However, our apps only render on-demand when the user changes parameters. But we would also like to re-render when the current EDR headroom changes to adapt the tone mapping to the new environment. The only solution we've found so far is to continuously query the screen for changes, which doesn't seem ideal. It would be better if the property would be observable via KVO or if there would be a system notification to listen for. Thanks!
2
0
1.3k
Feb ’25
Preventing app from installing on iPad.
Hello, The app that I am working on has capabilities where it needs Phone App to place a call. The app has never been published to App Store before and will be publishing soon after making the configuration changes to prevent it from installing on iPad. I went through Apple documentation and while I understand that Apple expects apps to be allowed to installed on as many device sizes as possible, this app needs Phone app and hence I wanted to prevent it from getting installed on iPad, just like Whatsapp does. In Xcode, I only have iPhone in supported destinations and I also added "Required device capabilities" in Info.plist with values as arm7, Camera flash (since the app uses torch) and Phone App. However, when I sideload the app on iPad, I am able to install the app (looks like emulated iPhone) instead of getting an error. Are there any other changes that I need to make to prevent installation of the app on iPad?
0
1
432
Feb ’25
Navigation Issue in iOS 18: Duplication of Navigation Trigger When Using @Environment(\.dismiss) in SwiftUI
I’m encountering an issue with SwiftUI navigation in iOS 18, where navigating to a DetailView causes unexpected duplication of navigation behavior when @Environment(.dismiss) is used. Code Example: Here’s a simplified version of the code: struct ContentView: View { var body: some View { NavigationStack { NavigationLink("Go to Detail View", destination: DetailView()) .padding() } } } struct DetailView: View { @Environment(\.dismiss) var dismiss var body: some View { VStack { let _ = print("DetailView") // This print statement is triggered twice in iOS 18 } } } Issue: In iOS 18, when @Environment(.dismiss) is used in DetailView, the print("DetailView") statement is triggered twice. The same code works correctly in iOS 17 and earlier, where the print statement is only triggered once, as expected. However, when I remove @Environment(.dismiss) from DetailView, the code works as intended in iOS 18, with the print statement being triggered only once and no duplication of navigation behavior. Alternative Approach with .navigationDestination(for:): I also tested using .navigationDestination(for:) to handle navigation: struct ContentView: View { var body: some View { NavigationStack { NavigationLink("Go to Detail View", destination: DetailView()) .padding() } } } struct DetailView: View { @Environment(\.dismiss) var dismiss var body: some View { VStack { let _ = print("DetailView") // This print statement is triggered twice in iOS 18 } } } Even with this alternative approach, the issue persists in iOS 18, where the print statement is triggered twice. What I've Tried: I’ve confirmed that removing @Environment(.dismiss) solves the issue, and the print statement is triggered only once, and the navigation works as expected in iOS 18 without duplication. The issue only occurs when @Environment(.dismiss) is in use, which seems to be tied to the navigation stack behavior. The code works correctly in iOS 17 and below, where the print statement is only called once. Expected Behavior: I expect the print("DetailView") statement to be called once when navigating to DetailView, and that the navigation happens only once without duplication. The presence of @Environment(.dismiss) should not cause the navigation to be triggered multiple times. Questions: Is this a known issue with iOS 18 and SwiftUI navigation? Specifically, is there a new behavior that interacts differently with @Environment(.dismiss)? Has anyone else encountered this problem, and if so, what’s the recommended way to handle it in iOS 18? Is there a workaround to ensure that the navigation doesn’t trigger more than once when using @Environment(.dismiss) in iOS 18? Any help or insights would be greatly appreciated!
1
0
384
Feb ’25
Incorrect support language displayed at App Store
Our app support English and Traditional Chinese only, so the Xcode config and the app store setting include these 2 languages only now. However, the support languages displayed at the App Store show our app support Simplified Chinese. Would like to know is there any config we missed or wrong setting we have done? Appreciate for any reply or suggestion.
5
0
1.3k
Feb ’25
Error throws while using the speech recognition service in my app
Recently I updated to Xcode 14.0. I am building an iOS app to convert recorded audio into text. I got an exception while testing the application from the simulator(iOS 16.0). [SpeechFramework] -[SFSpeechRecognitionTask handleSpeechRecognitionDidFailWithError:]_block_invoke Ignoring subsequent recongition error: Error Domain=kAFAssistantErrorDomain Code=1101 "(null)" Error Domain=kAFAssistantErrorDomain Code=1107 "(null)" I have to know what does the error code means and why this error occurred.
20
3
12k
Feb ’25
Blocked calls are blocked but still appearing as unanswered calls in call history
I am using the Call Range Blocker App (App URL: https://apps.apple.com/in/app/call-ranger-spam-call-blocker/id1154832936) to block unwanted calls, so my phone doesn’t ring. However, despite being blocked, these calls still appear as unanswered calls in the call history, which is very frustrating. When users block a number, they expect to block all communication from that number, including call logs. When I contacted the app developer, I was informed that after iOS 18, blocked calls are still showing up as unanswered calls in the call history. I kindly request that Apple’s iOS development team look into this issue and address it in the next update. It is quite annoying to see blocked calls appear in the recent call history, and users would prefer not to have them show up at all. Thank you John
1
0
419
Feb ’25
Checking if iOS application is being debugged
While I found a solution to check if debugger is attached to a process following this Q&A. My query is mostly with regards to distribution aspect to it. My use-case is to have this check as an SDK that is shipped as XCFramework. I have verified no submission error being generated if app including this code is submitted to TestFlight. However, I am unsure what will happen if app having this check is submitted to appstore. Will this submission be rejected? Or having this check in an appstore submitted app doesn't impact anything?
0
0
332
Feb ’25
Overnightforecast data from weatherResponse.dailyForecast.forecast array object
Background: We are using Apple WeatherKit for an app to fetch future weather data specialty cloudCover and condition and pretipitationChance from the Overnightforecast data from weatherResponse.dailyForecast.forecast array object. Code Sample: On xcode on Swift and Swift UI using Apple WeatherKit task{ do{ let weatherResponse= try await self.weatherService.forecast(for: latLong) let cloudCover = weatherResponse.dailyForecast.forecast[0].overnightforecast.cloudCover Issue: While we are on debug mode, we can literally see overnightforecast.cloudCover data (as well as condition and pretipitationChance) is available under from index 0 to index 10 of weatherResponse.dailyForecast.forecast array object but when we are trying to assign this property, its throwing error as "overnightforecast object not present under weatherResponse.dailyForecast.forecast array object" Attachment:
3
0
397
Feb ’25
App alternative icon not working when archieve.
I add the following info in the build settings of my app. Then I also add the icon to my asset. I build the app, it works normally, but I notice that when I changed the icon to 'AppIcon-Defaults', The icon change alert didn't appear. but it succeeds . I uploaded the archive to App Store I got: ITMS-90895: Missing Icon - The Info.plist key CFBundleIcons.CFBundleAlternateIcons contains an entry “AppIcon-Defaults” that references asset “AppIcon-Defaults.” No such asset is present in the asset catalog. Then I use xcrun --sdk iphoneos assetutil --info Assets.car to check the assets inside the archieved app, It have the asset.
2
1
539
Feb ’25
I cannot pair my PHONAK hearing aids
I cannot pair my PHONAK hearing aids after I upgraded to iOS 18.3 under hearing devices, it just keeps on switching will not find anything. I’ve undelete them and reinstall them four times. Uninstalled the app. Under Bluetooth, it finds it and has it. But under hearing devices where I can control everything it will not. Once I add the hearing aids, my phone goes completely silent. I do not know if anyone calls or texts me
4
0
540
Jan ’25
@Environment(\.dismiss) causes endless loop in iOS 18.2.1
Hello, I've been using the @Environment(\.dismiss) var dismiss in a SwiftUI app for the last 2 years which means it was working as expected in iOS 16, iOS 17 and for the most part iOS 18 up until iOS 18.2.1 in which it is causing an endless loop and eventually a crash. It seems to be something about using a the @Environment(\.dismiss) with a NavigationLink which seems to cause this issue. When I add a log in my swiftUI views with let _ = Self._printChanges(), I see the following printed out in a loop: CurrentProjectView: _dismiss changed. SurveyView: @self changed. Similar issues have been reported: https://forums.developer.apple.com/forums/thread/720803 https://forums.developer.apple.com/forums/thread/739512 Any idea how to resolve this ?
2
1
632
Jan ’25
photos-navigation://album scheme
In my app SexyPeri (https://apps.apple.com/fr/app/id6738291985), I create an album with some pics Album is called SexyPeri Now, I wish to redirect the user from my app SexyPeri DIRECTLY to the album SexyPeri There is no doc about your scheme photos-navigation, or I didn't see it. Some guys retro-engineered it, but I couldn't make this work. photos-navigation://album?name=SexyPeri doesn't work. So my question is: how can I redirect to the album directly ?
1
0
407
Jan ’25
What's wrong with the List in debug mode on Xcode 16? And partly in the release mode.
When building in Xcode 15.4 debug, only a part of the initial View for List is initialized. As you scroll, new ones are initialized, and old ones are destroyed. When building the same code in Xcode 16.2, ALL Views are initialized first, and then immediately destroyed as you scroll, new ones are initialized, and old ones are destroyed. MRE: struct ContentView: View { private let arr = Array(1...5555) var body: some View { List(arr, id: \.self) { ListCellView(number: $0) } } } struct ListCellView: View { private let number: Int private let arr: [Int] @StateObject private var vm: ListCellViewModel // Just to print init/deinit init(number: Int) { print(#function, Self.self, number) self.arr = Array(0...number) self.number = number let vm = ListCellViewModel(number: number) // To see duplicates of init self._vm = StateObject(wrappedValue: vm) // because here is @autoclosure } var body: some View { let _ = print(#function, Self.self, number) Text("\(number)") } } class ListCellViewModel: ObservableObject { private let number: Int init(number: Int) { print(#function, Self.self, number) self.number = number } deinit { print(#function, Self.self, number) } } An example from a memory report with this code: Fortunately, the behavior in release mode is the same as in Xcode 15.4. However, the double initialization of Views is still present and has not been fixed. ... init(number:) ListCellView 42 init(number:) ListCellViewModel 42 init(number:) ListCellView 42 init(number:) ListCellViewModel 42 deinit ListCellViewModel 42 body ListCellView 42 Yes, unnecessary View initializations and extra body calls are "normal" for SwiftUI, but why do they here twice so that one is discarded immediately?
2
0
315
Jan ’25
Clarification on App Tracking Transparency (ATT) and Cookie Banner Integration
We are currently using Single Sign-On (SSO) for user authentication within our app, which is presented through a web view. This web view includes a cookie banner that allows users to either accept, reject all, or manage cookies. In some reviews, Apple suggests implementing App Tracking Transparency (ATT) if cookies are used. In other reviews, Apple may refer to guideline 5.1.2, which states: “Revise the app so that users are not required to enable tracking in order to access the app's content and functionality.” I have a few questions regarding the interaction between ATT and the cookie banner: 1 Is App Tracking Transparency required for the cookie banner?
If yes, iOS developers have no direct control over the cookies used on the webpage when the user selects "Ask App Not to Track" or "Allow". Despite this selection, the cookie banner still appears, prompting the user to accept or reject cookies. 2 How should App Tracking Transparency be implemented when a cookie banner is presented on a web page within an iOS app?
Since iOS developers do not have control over the cookies stored in the web view, is there a way to manage this interaction so that users aren't repeatedly prompted by the cookie banner after selecting their tracking preference in ATT? I would appreciate any guidance you can provide on how to properly implement ATT in this scenario, particularly when a web page within the app displays a cookie consent banner.
2
2
778
Jan ’25
Local storage/db of WKWebView in App Clips and installed Apps
Hello, I am studying a possible scenario. Let's say I create an App Clip that features a WKWebView. The WKWebView hosts a sort of webapp that uses local storage and IndexDB. When the complete app is installed, are the data persisted so the WKWebView of the complete app finds them as it was reading them before? Are the data transferred by the operating system to a new location but still accessed the same way by the WKWebView (Or even the location is the same because it is the WKWebView special storage)? Or are they wiped out? Thank you in advance Best regards
0
0
469
Jan ’25