Posts

Post not yet marked as solved
13 Replies
5.9k Views
In order to correctly arrange horizontal pickers representing Month, Day, Year in a Watch app, I'd like to get the order based on a user's language and region. Ideally, a return value from a function or property as simple as MDY vs. DMY vs. YMD.How can I get this info from a locale (or ???)?
Posted
by DrMiller.
Last updated
.
Post not yet marked as solved
0 Replies
897 Views
Updating an older iOS/WatchOS app, received this warning after a symbolic breakpoint, with Xcode 12.4. I thought I understood the message (below) but when I checked (ObjC, storyboard), there's the view - safety area - and my TableViewController with the TVC constraints all limited to the safety area. I have no clue what how to eliminate this, OR if I even have to. If I disable the breakpoint, the app works perfectly on my iPhone X 13.4 and the simulators with no other warnings or messages. Does this message have to be addressed, and if it does, how do I inspect and fix it? 2021-02-17 10:46:06.461895-0600 OBWheelPro7[34829:9634118] [TableView] Warning once only: UITableView was told to layout its visible cells and other contents without being in the view hierarchy (the table view or one of its superviews has not been added to a window). This may cause bugs by forcing views inside the table view to load and perform layout without accurate information (e.g. table view bounds, trait collection, layout margins, safe area insets, etc), and will also cause unnecessary performance overhead due to extra layout passes. Make a symbolic breakpoint at UITableViewAlertForLayoutOutsideViewHierarchy to catch this in the debugger and see what caused this to occur, so you can avoid this action altogether if possible, or defer it until the table view has been added to a window. Table view: UITableView: 0x10301e200; frame = (0 0; 320 519); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = NSArray: 0x282650180; layer = CALayer: 0x282874160; contentOffset: {0, 0}; contentSize: {320, 176}; adjustedContentInset: {0, 0, 0, 0}; dataSource: xxCalculatorViewController: 0x10301d600 #0 0x000000019003a6b4 in UITableViewAlertForLayoutOutsideViewHierarchy () #1 0x00000001900397f4 in -[UITableView _updateVisibleCellsNow:] () #2 0x000000019004c980 in -[UITableView _cellForRowAtIndexPath:usingPresentationValues:] () #3 0x000000019004c864 in -[UITableView cellForRowAtIndexPath:] () #4 0x000000018fde35d8 in __61-[UIPickerTableView selectRow:animated:notify:updateChecked:]_block_invoke.216 () #5 0x0000000190355704 in +[UIView(Animation) performWithoutAnimation:] () #6 0x000000018fde31e0 in -[UIPickerTableView selectRow:animated:notify:updateChecked:] () #7 0x000000018fdea748 in -[UIPickerView _selectRow:inComponent:animated:notify:] () #8 0x000000018fddd710 in -[_UIDatePickerView _selectRow:inComponent:animated:notify:] () #9 0x000000018fdd3b38 in -[_UIDatePickerMode loadDate:animated:] () #10 0x000000018fdd7c74 in -[_UIDatePickerMode_DateAndTime loadDate:animated:] () #11 0x000000018fddd6b8 in -[_UIDatePickerView _loadDateAnimated:] () #12 0x000000018fddcfa4 in -[_UIDatePickerView didChangeDateFrom:animated:] () #13 0x000000018fddcc48 in -[_UIDatePickerView setData:] () #14 0x000000018fdcb584 in -[UIDatePicker _installPickerView:updatingSize:] () #15 0x000000018fdcbf7c in -[UIDatePicker initWithCoder:] () #16 0x00000001961c6edc in UINibDecoderDecodeObjectForValue () #17 0x0000000196153854 in -[UINibDecoder decodeObjectForKey:] () #18 0x000000018fa9d570 in -[UIRuntimeConnection initWithCoder:] () #19 0x00000001961c6edc in UINibDecoderDecodeObjectForValue () #20 0x00000001961c70f4 in UINibDecoderDecodeObjectForValue () #21 0x0000000196153854 in -[UINibDecoder decodeObjectForKey:] () #22 0x000000018fa984fc in -[NSCoder(UIIBDependencyInjectionInternal) _decodeObjectsWithSourceSegueTemplate:creator:sender:forKey:] () #23 0x000000018fa9aed4 in -[UINib instantiateWithOwner:options:] () #24 0x000000018f796d88 in -[UIViewController loadView] () #25 0x000000018f797114 in -[UIViewController loadViewIfRequired] () #26 0x000000018f7977e8 in -[UIViewController view] () #27 0x000000018f6b339c in -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] () #28 0x000000018f6b2734 in -[UITabBarController transitionFromViewController:toViewController:] () #29 0x000000018f6aeec0 in -[UITabBarController _setSelectedViewController:] () #30 0x000000018f6aecd8 in -[UITabBarController setSelectedViewController:] () #31 0x0000000190355704 in +[UIView(Animation) performWithoutAnimation:] () #32 0x000000018f6a9be0 in -[UITabBarController _selectDefaultViewControllerIfNecessaryWithAppearanceTransitions:] () #33 0x000000018f6aab90 in -[UITabBarController viewWillAppear:] ()
Posted
by DrMiller.
Last updated
.
Post not yet marked as solved
0 Replies
587 Views
My 2015 universal app needing an update apparently needs a Launch Screen storyboard. The iPhone app (for smaller phones in portrait and landscape) is basically a tab bar controller connected to several navigable table view controllers displaying first a topics table page and then details. For larger iPhones and iPads, this is all done programmatically in my code and becomes a split view with a column for topics and a larger area for details. The current app uses dozens of screen shots for each device and orientation. With Xcode 12, I'm at a loss of how to create a single launch screen that will display the tab bar controller and an empty table (which was easy), yet magically move the tab bar controller to the left and the details on the larger area on the right for a split view. Is there any documentation/videos/tutorials of how to manage this? If it was just iPhones and iPads I could make two launch storyboards but I don't know how to include large iPhones.
Posted
by DrMiller.
Last updated
.
Post not yet marked as solved
1 Replies
930 Views
I have read the disconnected documentation for adding a "simple" complication that ONLY launches my app using the asset images I've created in various sizes for various families along with the ComplicationController code, but the complications never appear (with no errors). I would like to support Watch Series 1 with OS 4.3 on up. There never seems to be one place where this simple, default function is documented. What are the steps and code required to just launch a Watch app from a complication?
Posted
by DrMiller.
Last updated
.
Post not yet marked as solved
0 Replies
452 Views
When I run my Watch app in the Xcode 12.2, MacOS 11.0.1 Simulator (any size watch) for an update the text in my three WKInterfacePickers are truncated with ellipsis, e.g. MONTHS Jul, A..., Sep DAYS 14,15,16, YEARS 20..., 20..., 20... I keep the Width "Relative to Container" specifying a percentage for each picker adding up to 1. The Height of the Group container is constant. With the same settings on my (only) hardware 1st Gen Watch watchOS 4.3.2, the titles/text are fine and complete. The ellipses are less frequent with the 44mm face though. It doesn't seem the titles/text adapt to their containers. Any ideas?
Posted
by DrMiller.
Last updated
.
Post not yet marked as solved
0 Replies
423 Views
I'm an Objective C relic (don't do Swift) with an iPhone app with a Watch app that I haven't had to touch for 2 years (because it just works) and has worked with WatchOSs 1-6 but now is broken because I used one Force Touch menu item in three paged views each with three pickers (just a spinner on opening). Basically, the app is a calculator using dates and the menu item simply lets the Watch user set the date to Today with one tap instead of fiddling with three pickers. I've watched the 2020 WWDC video "What's New in watchOS Design". It looks like the best fit would be a toolbar button on top but that is only available in OS 7. Many users can't have OS 7 on a 1st Gen Watch. I thought I could create a home-brew replica but found there is not a scroll view in watchOS before 7 to even place a button. The next best thing would be something like a More button but I can't figure out how to add/overlay a button (leading to a modal) in a lower corner (no constraints or auto layout in watchOS) without running into trouble with curved screens and different sized faces. So, I would be interested in any suggestions and help on how to resolve this for all watchOSs, or I guess I'll just remove this helpful functionality (which many probably do not even know is there because it's hidden).
Posted
by DrMiller.
Last updated
.
Post not yet marked as solved
7 Replies
1.2k Views
I have had two user contacts in the last week where they easily install my Universal app on another iPhone, restore their previous IAP upgrade purchase (added functionality - interconnectivity via BTLE between iOS devices), BUT when they install to a second device, exclusively an iPad (both iPad Airs - so far), and try to restore the IAP purchase, my app is not able to connect to the App Store for the IAP upgrade. My app displays a message when there is no Internet access or no connection to the App Store with the same error message.My app has not been updated since 2017 with a dozen or so IAP upgrades as one of its main features. I have not been able to reproduce the error on my iPhone X and iPad Pro (on iOS 12.4.1 as is with these users). And no Crashes in the last two weeks with Xcode Organizer. In fact, the connection and upgrade on my devices and network is instantaneous. I have had users not be able to connect to the App Store a couple times a year that is solved by just trying again later.In both cases, with the latest iOS, they have 1) demonstrable Internet connections, 2) tried later several times over days, 3) tried deleting the app to their iPads and reinstalling it, 4) powered down and powered up the iPad.I fear these two incidents may be the tip of the iceberg for some bizarre reason, but as I cannot reproduce this, I'm clueless.Does anyone know what could be causing this, or how I can diagnose these errors?
Posted
by DrMiller.
Last updated
.