From 7ae57b7620b1180b3ed2f703f2646d2ddc85246b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Je=CC=81re=CC=81mie=20Leroy?= <7473932+jkleroy@users.noreply.github.com> Date: Tue, 18 Sep 2018 01:42:19 +0200 Subject: [PATCH] Adding Haptic feedback With example view (only works on supported physical iPhones) --- ExampleViews/HapticFeedbackView.xojo_code | 436 +++++++++++++++++ ExampleViews/MainView.xojo_code | 289 ++++++----- Modules/UIKit/UIFeedbackGenerator.xojo_code | 63 +++ .../UIKit/UIImpactFeedbackGenerator.xojo_code | 73 +++ .../UINotificationFeedbackGenerator.xojo_code | 72 +++ .../UISelectionFeedbackGenerator.xojo_code | 65 +++ iOSKit.xojo_project | 459 +++++++++--------- 7 files changed, 1097 insertions(+), 360 deletions(-) create mode 100644 ExampleViews/HapticFeedbackView.xojo_code create mode 100644 Modules/UIKit/UIFeedbackGenerator.xojo_code create mode 100644 Modules/UIKit/UIImpactFeedbackGenerator.xojo_code create mode 100644 Modules/UIKit/UINotificationFeedbackGenerator.xojo_code create mode 100644 Modules/UIKit/UISelectionFeedbackGenerator.xojo_code diff --git a/ExampleViews/HapticFeedbackView.xojo_code b/ExampleViews/HapticFeedbackView.xojo_code new file mode 100644 index 0000000..6d0553e --- /dev/null +++ b/ExampleViews/HapticFeedbackView.xojo_code @@ -0,0 +1,436 @@ +#tag IOSView +Begin iosView HapticFeedbackView + BackButtonTitle = "" + Compatibility = "" + LargeTitleMode = "2" + Left = 0 + NavigationBarVisible= True + TabIcon = "" + TabTitle = "" + Title = "Haptic Feedback" + Top = 0 + Begin iOSLabel Label1 + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = Label1, 7, , 0, False, +1.00, 4, 1, 100, , True + AutoLayout = Label1, 9, , 9, False, +1.00, 4, 1, 0, , True + AutoLayout = Label1, 3, TopLayoutGuide, 4, False, +1.00, 4, 1, *kStdControlGapV, , True + AutoLayout = Label1, 8, , 0, False, +1.00, 4, 1, 30, , True + Enabled = True + Height = 30.0 + Left = 110 + LineBreakMode = "0" + LockedInPosition= False + Scope = 0 + Text = "Impact" + TextAlignment = "1" + TextColor = &c00000000 + TextFont = "System Bold " + TextSize = 0 + Top = 73 + Visible = True + Width = 100.0 + End + Begin iOSButton btImpactLight + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = btImpactLight, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = btImpactLight, 2, btImpactMedium, 1, False, +1.00, 4, 1, -20, , True + AutoLayout = btImpactLight, 3, Label1, 4, False, +1.00, 4, 1, *kStdControlGapV, , True + AutoLayout = btImpactLight, 7, , 0, False, +1.00, 4, 1, 80, , True + Caption = "Light" + Enabled = True + Height = 30.0 + Left = 20 + LockedInPosition= False + Scope = 0 + TextColor = &c007AFF00 + TextFont = "" + TextSize = 0 + Top = 111 + Visible = True + Width = 80.0 + End + Begin iOSButton btImpactMedium + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = btImpactMedium, 9, , 9, False, +1.00, 4, 1, 0, , True + AutoLayout = btImpactMedium, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = btImpactMedium, 3, Label1, 4, False, +1.00, 4, 1, *kStdControlGapV, , True + AutoLayout = btImpactMedium, 7, , 0, False, +1.00, 4, 1, 80, , True + Caption = "Medium" + Enabled = True + Height = 30.0 + Left = 120 + LockedInPosition= False + Scope = 0 + TextColor = &c007AFF00 + TextFont = "" + TextSize = 0 + Top = 111 + Visible = True + Width = 80.0 + End + Begin iOSButton btImpactHeavy + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = btImpactHeavy, 10, btImpactLight, 10, False, +1.00, 4, 1, 0, , True + AutoLayout = btImpactHeavy, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = btImpactHeavy, 1, btImpactMedium, 2, False, +1.00, 4, 1, 20, , True + AutoLayout = btImpactHeavy, 7, , 0, False, +1.00, 4, 1, 80, , True + Caption = "Heavy" + Enabled = True + Height = 30.0 + Left = 220 + LockedInPosition= False + Scope = 0 + TextColor = &c007AFF00 + TextFont = "" + TextSize = 0 + Top = 111 + Visible = True + Width = 80.0 + End + Begin iOSLabel Label2 + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = Label2, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = Label2, 1, Label1, 1, False, +1.00, 4, 1, 0, , True + AutoLayout = Label2, 3, btImpactMedium, 4, False, +1.00, 4, 1, 30, , True + AutoLayout = Label2, 7, , 0, False, +1.00, 4, 1, 100, , True + Enabled = True + Height = 30.0 + Left = 110 + LineBreakMode = "0" + LockedInPosition= False + Scope = 0 + Text = "Selection" + TextAlignment = "1" + TextColor = &c00000000 + TextFont = "System Bold " + TextSize = 0 + Top = 171 + Visible = True + Width = 100.0 + End + Begin iOSButton btSelectionChanged + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = btSelectionChanged, 9, , 9, False, +1.00, 4, 1, 0, , True + AutoLayout = btSelectionChanged, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = btSelectionChanged, 3, Label2, 4, False, +1.00, 4, 1, *kStdControlGapV, , True + AutoLayout = btSelectionChanged, 7, , 0, False, +1.00, 4, 2, 120, , True + Caption = "Selection Changed" + Enabled = True + Height = 30.0 + Left = 100 + LockedInPosition= False + Scope = 0 + TextColor = &c007AFF00 + TextFont = "" + TextSize = 0 + Top = 209 + Visible = True + Width = 120.0 + End + Begin iOSLabel Label3 + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = Label3, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = Label3, 1, Label2, 1, False, +1.00, 4, 1, 0, , True + AutoLayout = Label3, 3, btSelectionChanged, 4, False, +1.00, 4, 1, 30, , True + AutoLayout = Label3, 7, , 0, False, +1.00, 4, 1, 100, , True + Enabled = True + Height = 30.0 + Left = 110 + LineBreakMode = "0" + LockedInPosition= False + Scope = 0 + Text = "Selection" + TextAlignment = "1" + TextColor = &c00000000 + TextFont = "System Bold " + TextSize = 0 + Top = 269 + Visible = True + Width = 100.0 + End + Begin iOSButton btNotifError + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = btNotifError, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = btNotifError, 1, btNotifWarning, 2, False, +1.00, 4, 1, 20, , True + AutoLayout = btNotifError, 3, Label3, 4, False, +1.00, 4, 1, *kStdControlGapV, , True + AutoLayout = btNotifError, 7, , 0, False, +1.00, 4, 1, 80, , True + Caption = "Error" + Enabled = True + Height = 30.0 + Left = 220 + LockedInPosition= False + Scope = 0 + TextColor = &c007AFF00 + TextFont = "" + TextSize = 0 + Top = 307 + Visible = True + Width = 80.0 + End + Begin iOSButton btNotifSuccess + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = btNotifSuccess, 8, , 0, False, +1.00, 4, 1, 30, , True + AutoLayout = btNotifSuccess, 2, btNotifWarning, 1, False, +1.00, 4, 1, -20, , True + AutoLayout = btNotifSuccess, 3, Label3, 4, False, +1.00, 4, 1, *kStdControlGapV, , True + AutoLayout = btNotifSuccess, 7, , 0, False, +1.00, 4, 1, 80, , True + Caption = "Success" + Enabled = True + Height = 30.0 + Left = 20 + LockedInPosition= False + Scope = 0 + TextColor = &c007AFF00 + TextFont = "" + TextSize = 0 + Top = 307 + Visible = True + Width = 80.0 + End + Begin iOSButton btNotifWarning + AccessibilityHint= "" + AccessibilityLabel= "" + AutoLayout = btNotifWarning, 1, btImpactMedium, 1, False, +1.00, 4, 1, 0, , True + AutoLayout = btNotifWarning, 7, , 0, False, +1.00, 4, 1, 80, , True + AutoLayout = btNotifWarning, 3, Label3, 4, False, +1.00, 4, 1, *kStdControlGapV, , True + AutoLayout = btNotifWarning, 8, , 0, False, +1.00, 4, 1, 30, , True + Caption = "Warning" + Enabled = True + Height = 30.0 + Left = 120 + LockedInPosition= False + Scope = 0 + TextColor = &c007AFF00 + TextFont = "" + TextSize = 0 + Top = 307 + Visible = True + Width = 80.0 + End +End +#tag EndIOSView + +#tag WindowCode + #tag Property, Flags = &h21 + Private HapImpactHeavy As UIImpactFeedbackGenerator + #tag EndProperty + + #tag Property, Flags = &h21 + Private HapImpactLight As UIImpactFeedbackGenerator + #tag EndProperty + + #tag Property, Flags = &h21 + Private HapImpactMedium As UIImpactFeedbackGenerator + #tag EndProperty + + #tag Property, Flags = &h21 + Private HapNotification As UINotificationFeedbackGenerator + #tag EndProperty + + #tag Property, Flags = &h21 + Private HapSelection As UISelectionFeedbackGenerator + #tag EndProperty + + +#tag EndWindowCode + +#tag Events btImpactLight + #tag Event + Sub Action() + + If HapImpactLight Is Nil Then + + HapImpactLight = New UIImpactFeedbackGenerator(UIImpactFeedbackGenerator.UIImpactFeedbackStyle.light) + + End If + + HapImpactLight.Prepare + + HapImpactLight.ImpactOccurred + + End Sub + #tag EndEvent +#tag EndEvents +#tag Events btImpactMedium + #tag Event + Sub Action() + + If HapImpactMedium Is Nil Then + + HapImpactMedium = New UIImpactFeedbackGenerator(UIImpactFeedbackGenerator.UIImpactFeedbackStyle.medium) + + End If + + HapImpactMedium.Prepare + + HapImpactMedium.ImpactOccurred + + End Sub + #tag EndEvent +#tag EndEvents +#tag Events btImpactHeavy + #tag Event + Sub Action() + + + If HapImpactHeavy Is Nil Then + + HapImpactHeavy = New UIImpactFeedbackGenerator(UIImpactFeedbackGenerator.UIImpactFeedbackStyle.heavy) + + End If + + HapImpactHeavy.Prepare + + HapImpactHeavy.ImpactOccurred + + End Sub + #tag EndEvent +#tag EndEvents +#tag Events btSelectionChanged + #tag Event + Sub Action() + + If HapSelection Is Nil Then + + HapSelection = New UISelectionFeedbackGenerator + + End If + + HapSelection.Prepare + + HapSelection.SelectionChanged + + End Sub + #tag EndEvent +#tag EndEvents +#tag Events btNotifError + #tag Event + Sub Action() + + If HapNotification Is Nil Then + + HapNotification = New UINotificationFeedbackGenerator + + End If + + HapNotification.Prepare + + HapNotification.NotificationOccurred(UINotificationFeedbackGenerator.UINotificationFeedbackType.error) + End Sub + #tag EndEvent +#tag EndEvents +#tag Events btNotifSuccess + #tag Event + Sub Action() + + If HapNotification Is Nil Then + + HapNotification = New UINotificationFeedbackGenerator + + End If + + HapNotification.Prepare + + HapNotification.NotificationOccurred(UINotificationFeedbackGenerator.UINotificationFeedbackType.success) + End Sub + #tag EndEvent +#tag EndEvents +#tag Events btNotifWarning + #tag Event + Sub Action() + + If HapNotification Is Nil Then + + HapNotification = New UINotificationFeedbackGenerator + + End If + + HapNotification.Prepare + + HapNotification.NotificationOccurred(UINotificationFeedbackGenerator.UINotificationFeedbackType.warning) + End Sub + #tag EndEvent +#tag EndEvents +#tag ViewBehavior + #tag ViewProperty + Name="Index" + Visible=true + Group="ID" + InitialValue="-2147483648" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Name" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Super" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Left" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Top" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="BackButtonTitle" + Group="Behavior" + Type="Text" + EditorType="MultiLineEditor" + #tag EndViewProperty + #tag ViewProperty + Name="NavigationBarVisible" + Group="Behavior" + Type="Boolean" + #tag EndViewProperty + #tag ViewProperty + Name="TabIcon" + Group="Behavior" + Type="iOSImage" + #tag EndViewProperty + #tag ViewProperty + Name="TabTitle" + Group="Behavior" + Type="Text" + #tag EndViewProperty + #tag ViewProperty + Name="Title" + Group="Behavior" + Type="Text" + EditorType="MultiLineEditor" + #tag EndViewProperty + #tag ViewProperty + Name="LargeTitleMode" + Visible=true + Group="Behavior" + InitialValue="2" + Type="LargeTitleDisplayModes" + EditorType="Enum" + #tag EnumValues + "0 - Automatic" + "1 - Always" + "2 - Never" + #tag EndEnumValues + #tag EndViewProperty +#tag EndViewBehavior diff --git a/ExampleViews/MainView.xojo_code b/ExampleViews/MainView.xojo_code index 6a62920..66f7865 100644 --- a/ExampleViews/MainView.xojo_code +++ b/ExampleViews/MainView.xojo_code @@ -2,6 +2,7 @@ Begin iosView MainView BackButtonTitle = "" Compatibility = "" + LargeTitleMode = "2" Left = 0 NavigationBarVisible= True TabIcon = "" @@ -11,10 +12,11 @@ Begin iosView MainView Begin iOSTable Table1 AccessibilityHint= "" AccessibilityLabel= "" - AutoLayout = Table1, 4, BottomLayoutGuide, 4, False, +1.00, 1, 1, -69, - AutoLayout = Table1, 2, , 2, False, +1.00, 1, 1, -0, - AutoLayout = Table1, 3, TopLayoutGuide, 4, False, +1.00, 1, 1, *kStdControlGapV, - AutoLayout = Table1, 1, , 1, False, +1.00, 1, 1, 0, + AllowRefresh = False + AutoLayout = Table1, 4, BottomLayoutGuide, 4, False, +1.00, 1, 1, -69, , True + AutoLayout = Table1, 2, , 2, False, +1.00, 1, 1, -0, , True + AutoLayout = Table1, 3, TopLayoutGuide, 4, False, +1.00, 1, 1, *kStdControlGapV, , True + AutoLayout = Table1, 1, , 1, False, +1.00, 1, 1, 0, , True EditingEnabled = False EditingEnabled = False EstimatedRowHeight= -1 @@ -74,206 +76,225 @@ End // 13 = Unit Tests // 14 = GameKit - dim newMasterView as iOSView - dim newDetailView as iOSView + Dim newMasterView As iOSView + Dim newDetailView As iOSView - select case row - case 0 - newDetailView = new ActivityView - case 1 - newDetailView = new CameraView - case 2 - newDetailView = new MissingControlsView - case 3 - newDetailView = new CreateQRView - case 4 - newDetailView = new ReadQRView - case 5 - newDetailView = new SoundsView - case 6 - newDetailView = new EmailView - case 7 - newDetailView = new ReachabilityView - case 8 - newDetailView = new CoreMotionView - case 9 - newDetailView = new KeychainView - case 10 - newDetailView = new AVFoundationDemoView - case 11 - newDetailView = new RecordPlayVideo - case 12 - newDetailView = new UIAlertView - case 13 - newDetailView = new ShakingView - case 14 - newDetailView = new GameKitDemoView - case 15 + Select Case row + Case 0 + newDetailView = New ActivityView + Case 1 + newDetailView = New CameraView + Case 2 + newDetailView = New MissingControlsView + Case 3 + newDetailView = New CreateQRView + Case 4 + newDetailView = New ReadQRView + Case 5 + newDetailView = New SoundsView + Case 6 + newDetailView = New EmailView + Case 7 + newDetailView = New ReachabilityView + Case 8 + newDetailView = New CoreMotionView + Case 9 + newDetailView = New KeychainView + Case 10 + newDetailView = New AVFoundationDemoView + Case 11 + newDetailView = New RecordPlayVideo + Case 12 + newDetailView = New UIAlertView + Case 13 + newDetailView = New ShakingView + Case 14 + newDetailView = New GameKitDemoView + Case 15 'newDetailView = new UIDocumentPickerView //for a future version when entitlements actually work - case 16 - newDetailView = new improvediOSTableView - case 17 - newMasterView = new XojoUnitTestGroupView - newDetailView = new XojoUnitTestDetailsView - else + Case 16 + newDetailView = New improvediOSTableView + Case 17 + newDetailView = New HapticFeedbackView + Case 18 + newMasterView = New XojoUnitTestGroupView + newDetailView = New XojoUnitTestDetailsView + + Else //shouldn't get here Return - end select + End Select 'declare sub presentViewController_ lib UIKitLib selector "presentViewController:animated:completion:" (obj_id as ptr, viewControllerToPresent as ptr, flag as Boolean, completion as ptr) 'PresentViewController_(self.ViewControllerHandle, newDetailView.ViewControllerHandle, True, nil) - if newMasterView isa iOSView then - self.PushTo newMasterView - end if + If newMasterView IsA iOSView Then + Self.PushTo newMasterView + End If - if newDetailView isa iOSView then - if ParentSplitView.Available then - self.ParentSplitView.Detail = newDetailView - else - self.PushTo newDetailView - end if + If newDetailView IsA iOSView Then + If ParentSplitView.Available Then + Self.ParentSplitView.Detail = newDetailView + Else + Self.PushTo newDetailView + End If end if End Sub #tag EndEvent #tag Event Sub Open() - me.AddSection("Select a view") - dim d as iOSTableCellData - #if XojoVersion < 2016.03 - d = new iOSTableCellData("UIActivityView") + Me.AddSection("Select a view") + Dim d As iOSTableCellData + #If XojoVersion < 2016.03 + d = New iOSTableCellData("UIActivityView") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Camera") + d = New iOSTableCellData("Camera") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Missing UIControls") + d = New iOSTableCellData("Missing UIControls") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Create QRCode") + d = New iOSTableCellData("Create QRCode") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Read QRCode") + d = New iOSTableCellData("Read QRCode") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("System Sounds") + d = New iOSTableCellData("System Sounds") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Email") + d = New iOSTableCellData("Email") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Reachability") + d = New iOSTableCellData("Reachability") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Core Motion") + d = New iOSTableCellData("Core Motion") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Keychain Services") + d = New iOSTableCellData("Keychain Services") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("AVFoundation Demos") + d = New iOSTableCellData("AVFoundation Demos") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Record and Play video") + d = New iOSTableCellData("Record and Play video") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("UIActionController") + d = New iOSTableCellData("UIActionController") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Shaking") + d = New iOSTableCellData("Shaking") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("GameKit Demos (In progress)") + d = New iOSTableCellData("GameKit Demos (In progress)") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("UIDocumentPicker") + d = New iOSTableCellData("UIDocumentPicker") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - d = new iOSTableCellData("Improved iOSTable") + d = New iOSTableCellData("Improved iOSTable") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) + Me.AddRow(0,d) - if self.ParentSplitView.Available then - d = new iOSTableCellData("Unit Tests") + If Self.ParentSplitView.Available Then + d = New iOSTableCellData("Unit Tests") d.AccessoryType = iOSTableCellData.AccessoryTypes.Disclosure - me.AddRow(0,d) - end if - #else - d = me.CreateCell("UIActivityView","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + Me.AddRow(0,d) + End If + #Else + d = Me.CreateCell("UIActivityView","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) + + d = Me.CreateCell("Camera","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Camera","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Missing UIControls","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Missing UIControls","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Create QRCode","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Create QRCode","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Read QRCode","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Read QRCode","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("System Sounds","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("System Sounds","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Email","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Email","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Reachability","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Reachability","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Core Motion","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Core Motion","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Keychain Services","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Keychain Services","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("AVFoundation Demos","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("AVFoundation Demos","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Record and Play video","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Record and Play video","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("UIActionController","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("UIActionController","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Shaking","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Shaking","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("GameKit Demos (In progress)","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("GameKit Demos (In progress)","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("UIDocumentPicker","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("UIDocumentPicker","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Improved iOSTable","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - d = me.CreateCell("Improved iOSTable","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) + d = Me.CreateCell("Haptic Feedback","iPhone only",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) - if self.ParentSplitView.Available then - d = me.CreateCell("Unit Tests","",nil,iOSTableCellData.AccessoryTypes.Disclosure) - me.AddRow(0,d) - end if + If Self.ParentSplitView.Available Then + d = Me.CreateCell("Unit Tests","",Nil,iOSTableCellData.AccessoryTypes.Disclosure) + Me.AddRow(0,d) + End If #endif End Sub #tag EndEvent #tag EndEvents #tag ViewBehavior + #tag ViewProperty + Name="LargeTitleMode" + Visible=true + Group="Behavior" + InitialValue="2" + Type="LargeTitleDisplayModes" + EditorType="Enum" + #tag EnumValues + "0 - Automatic" + "1 - Always" + "2 - Never" + #tag EndEnumValues + #tag EndViewProperty #tag ViewProperty Name="BackButtonTitle" Group="Behavior" diff --git a/Modules/UIKit/UIFeedbackGenerator.xojo_code b/Modules/UIKit/UIFeedbackGenerator.xojo_code new file mode 100644 index 0000000..e40fffd --- /dev/null +++ b/Modules/UIKit/UIFeedbackGenerator.xojo_code @@ -0,0 +1,63 @@ +#tag Class +Protected Class UIFeedbackGenerator +Inherits NSObject + #tag Method, Flags = &h21 + Private Sub Constructor() + // Calling the overridden superclass constructor. + // Note that this may need modifications if there are multiple constructor choices. + // Possible constructor calls: + // Constructor() -- From NSObject + // Constructor(ref as ptr) -- From NSObject + 'Super.Constructor + + //Making this private to not instantiate the superclass of UIFeedbackGenerator + End Sub + #tag EndMethod + + #tag Method, Flags = &h0, Description = 5072657061726573207468652074617074696320656E67696E65 + Sub Prepare() + + Declare Sub prepare Lib UIKitLib selector "prepare" (obj_id As ptr) + + prepare(self.id) + End Sub + #tag EndMethod + + + #tag ViewBehavior + #tag ViewProperty + Name="Index" + Visible=true + Group="ID" + InitialValue="-2147483648" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Left" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Name" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Super" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Top" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag EndViewBehavior +End Class +#tag EndClass diff --git a/Modules/UIKit/UIImpactFeedbackGenerator.xojo_code b/Modules/UIKit/UIImpactFeedbackGenerator.xojo_code new file mode 100644 index 0000000..a5a0fff --- /dev/null +++ b/Modules/UIKit/UIImpactFeedbackGenerator.xojo_code @@ -0,0 +1,73 @@ +#tag Class +Class UIImpactFeedbackGenerator +Inherits UIFeedbackGenerator + #tag Method, Flags = &h0 + Sub Constructor(style As UIImpactFeedbackStyle) + // Calling the overridden superclass constructor. + // Note that this may need modifications if there are multiple constructor choices. + // Possible constructor calls: + // Constructor() -- From UIFeedbackGenerator + // Constructor() -- From NSObject + // Constructor(ref as ptr) -- From NSObject + + Declare Function initWithStyle Lib UIKitLib selector "initWithStyle:" (obj_id As ptr, st As UIImpactFeedbackStyle) as ptr + + + Super.Constructor(initWithStyle(Allocate(NSClassFromString("UIImpactFeedbackGenerator")), style)) + End Sub + #tag EndMethod + + #tag Method, Flags = &h0, Description = 547269676765727320696D7061637420666565646261636B + Sub ImpactOccurred() + + Declare Sub impactOccurred_ Lib UIKitLib selector "impactOccurred" (obj_id As ptr) + + impactOccurred_(Self.id) + End Sub + #tag EndMethod + + + #tag Enum, Name = UIImpactFeedbackStyle, Type = Integer, Flags = &h0 + light = 0 + medium + heavy + #tag EndEnum + + + #tag ViewBehavior + #tag ViewProperty + Name="Index" + Visible=true + Group="ID" + InitialValue="-2147483648" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Left" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Name" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Super" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Top" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag EndViewBehavior +End Class +#tag EndClass diff --git a/Modules/UIKit/UINotificationFeedbackGenerator.xojo_code b/Modules/UIKit/UINotificationFeedbackGenerator.xojo_code new file mode 100644 index 0000000..580bbba --- /dev/null +++ b/Modules/UIKit/UINotificationFeedbackGenerator.xojo_code @@ -0,0 +1,72 @@ +#tag Class +Class UINotificationFeedbackGenerator +Inherits UIFeedbackGenerator + #tag Method, Flags = &h0 + Sub Constructor() + // Calling the overridden superclass constructor. + // Note that this may need modifications if there are multiple constructor choices. + // Possible constructor calls: + // Constructor() -- From UIFeedbackGenerator + // Constructor() -- From NSObject + // Constructor(ref as ptr) -- From NSObject + + + + Super.Constructor(initialize(Allocate(NSClassFromString("UINotificationFeedbackGenerator")))) + End Sub + #tag EndMethod + + #tag Method, Flags = &h0, Description = 54726967676572732073656C656374696F6E20666565646261636B2E + Sub NotificationOccurred(type As UINotificationFeedbackType) + + Declare Sub notificationOccurred_ Lib UIKitLib selector "notificationOccurred:" (obj_id As ptr, tp As UINotificationFeedbackType) + + notificationOccurred_(self.id, type) + End Sub + #tag EndMethod + + + #tag Enum, Name = UINotificationFeedbackType, Type = Integer, Flags = &h0 + success = 0 + warning + error + #tag EndEnum + + + #tag ViewBehavior + #tag ViewProperty + Name="Index" + Visible=true + Group="ID" + InitialValue="-2147483648" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Left" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Name" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Super" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Top" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag EndViewBehavior +End Class +#tag EndClass diff --git a/Modules/UIKit/UISelectionFeedbackGenerator.xojo_code b/Modules/UIKit/UISelectionFeedbackGenerator.xojo_code new file mode 100644 index 0000000..f191c60 --- /dev/null +++ b/Modules/UIKit/UISelectionFeedbackGenerator.xojo_code @@ -0,0 +1,65 @@ +#tag Class +Class UISelectionFeedbackGenerator +Inherits UIFeedbackGenerator + #tag Method, Flags = &h0 + Sub Constructor() + // Calling the overridden superclass constructor. + // Note that this may need modifications if there are multiple constructor choices. + // Possible constructor calls: + // Constructor() -- From UIFeedbackGenerator + // Constructor() -- From NSObject + // Constructor(ref as ptr) -- From NSObject + + + + Super.Constructor(initialize(Allocate(NSClassFromString("UISelectionFeedbackGenerator")))) + End Sub + #tag EndMethod + + #tag Method, Flags = &h0, Description = 54726967676572732073656C656374696F6E20666565646261636B2E + Sub SelectionChanged() + + Declare Sub SelectionChanged_ Lib UIKitLib selector "selectionChanged" (obj_id As ptr) + + SelectionChanged_(self.id) + End Sub + #tag EndMethod + + + #tag ViewBehavior + #tag ViewProperty + Name="Index" + Visible=true + Group="ID" + InitialValue="-2147483648" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Left" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag ViewProperty + Name="Name" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Super" + Visible=true + Group="ID" + Type="String" + #tag EndViewProperty + #tag ViewProperty + Name="Top" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + #tag EndViewProperty + #tag EndViewBehavior +End Class +#tag EndClass diff --git a/iOSKit.xojo_project b/iOSKit.xojo_project index 34e74e2..a5bd28a 100644 --- a/iOSKit.xojo_project +++ b/iOSKit.xojo_project @@ -1,231 +1,236 @@ Type=iOS -RBProjectVersion=2017.011 +RBProjectVersion=2018.02 MinIDEVersion=20140300 -Class=App;App.xojo_code;&h5FAFE765;&h0;false -iOSScreen=iPhoneScreen;iPhoneScreen.xojo_code;&h15810A9D;&h0;false -iOSScreen=iPadScreen;iPadScreen.xojo_code;&h4AE01618;&h0;false -BuildSteps=Build Automation;Build Automation.xojo_code;&h35D13E19;&h0;false -Folder=ExampleViews;ExampleViews;&h1989717F;&h0;false -Folder=GameKitViews;ExampleViews/GameKitViews;&h43718FFF;&h1989717F;false -iOSView=EmptyView;ExampleViews/EmptyView.xojo_code;&h5BD067FF;&h1989717F;false -Class=iOSTestController;iOSTestController.xojo_code;&h3FC78D4E;&h0;false -Folder=Unit Tests;Unit Tests;&h79CC2FFF;&h0;false -iOSView=RecordPlayVideo;ExampleViews/RecordPlayVideo.xojo_code;&h6557DFFF;&h1989717F;false -iOSView=CoreMotionView;ExampleViews/CoreMotionView.xojo_code;&h6BDCCA6C;&h1989717F;false -iOSView=ReachabilityView;ExampleViews/ReachabilityView.xojo_code;&h4920F51B;&h1989717F;false -iOSView=SoundsView;ExampleViews/SoundsView.xojo_code;&h37C78F80;&h1989717F;false -iOSView=ReadQRView;ExampleViews/ReadQRView.xojo_code;&h359C4299;&h1989717F;false -iOSView=CreateQRView;ExampleViews/CreateQRView.xojo_code;&h3FB62918;&h1989717F;false -iOSView=MainView;ExampleViews/MainView.xojo_code;&h63DB034D;&h1989717F;false -iOSView=improvediOSTableView;ExampleViews/improvediOSTableView.xojo_code;&h1BC87FFF;&h1989717F;false -iOSView=ActivityView;ExampleViews/ActivityView.xojo_code;&h379E3F9B;&h1989717F;false -iOSView=EmailView;ExampleViews/EmailView.xojo_code;&h1FA03105;&h1989717F;false -iOSView=CameraView;ExampleViews/CameraView.xojo_code;&h734B3627;&h1989717F;false -iOSView=MissingControlsView;ExampleViews/MissingControlsView.xojo_code;&h3DCAE9B5;&h1989717F;false -iOSView=KeychainView;ExampleViews/KeychainView.xojo_code;&h1276C53B;&h1989717F;false -Folder=AVFoundationViews;ExampleViews/AVFoundationViews;&h5074C7FF;&h1989717F;false -iOSView=FlashlightView;ExampleViews/AVFoundationViews/FlashlightView.xojo_code;&h164847FF;&h5074C7FF;false -iOSView=PictureView;ExampleViews/AVFoundationViews/PictureView.xojo_code;&h1ECD9AB1;&h5074C7FF;false -iOSView=StillImageView;ExampleViews/AVFoundationViews/StillImageView.xojo_code;&h4D032FFF;&h5074C7FF;false -iOSView=RecordPlayAudioView;ExampleViews/AVFoundationViews/RecordPlayAudioView.xojo_code;&h741A9FFF;&h5074C7FF;false -iOSView=SpeechSynthesisView;ExampleViews/AVFoundationViews/SpeechSynthesisView.xojo_code;&h3ECDAFFF;&h5074C7FF;false -iOSView=AVFoundationDemoView;ExampleViews/AVFoundationViews/AVFoundationDemoView.xojo_code;&h31CCEFFF;&h5074C7FF;false -iOSView=BarcodeScannerView;ExampleViews/AVFoundationViews/BarcodeScannerView.xojo_code;&h636B97FF;&h5074C7FF;false -Folder=Modules;Modules;&hE7A9798;&h0;false -Module=KeychainServices;Modules/KeychainServices.xojo_code;&h772DAE8A;&hE7A9798;false -Class=JK_KeychainItem;Modules/KeychainServices/JK_KeychainItem.xojo_code;&h1BF5DAEF;&h772DAE8A;false -Module=Foundation;Modules/Foundation.xojo_code;&h34FECEF5;&hE7A9798;false -Class=NSUUID;Modules/Foundation/NSUUID.xojo_code;&h463199EB;&h34FECEF5;false -Class=NSMutableData;Modules/Foundation/NSMutableData.xojo_code;&hD5E04B;&h34FECEF5;false -Class=NSArray;Modules/Foundation/NSArray.xojo_code;&h1A12E5DF;&h34FECEF5;false -Class=NSDictionary;Modules/Foundation/NSDictionary.xojo_code;&h3E1BC095;&h34FECEF5;false -Class=NSMutableArray;Modules/Foundation/NSMutableArray.xojo_code;&h4B16BDAC;&h34FECEF5;false -Class=NSMutableDictionary;Modules/Foundation/NSMutableDictionary.xojo_code;&h1000D7B4;&h34FECEF5;false -Class=NSString;Modules/Foundation/NSString.xojo_code;&h6B9BDF3E;&h34FECEF5;false -Class=NSDate;Modules/Foundation/NSDate.xojo_code;&h4FA72A69;&h34FECEF5;false -Class=NSObject;Modules/Foundation/NSObject.xojo_code;&h2D9E45A4;&h34FECEF5;false -Class=NSRect;Modules/Foundation/NSRect.xojo_code;&h58F94107;&h34FECEF5;false -Class=NSPoint;Modules/Foundation/NSPoint.xojo_code;&h541CA1D9;&h34FECEF5;false -Class=NSSize;Modules/Foundation/NSSize.xojo_code;&h50D6905B;&h34FECEF5;false -Class=SmartMemoryBlock;Modules/Foundation/SmartMemoryBlock.xojo_code;&h25AA10E6;&h34FECEF5;false -Class=SmartMutableMemoryBlock;Modules/Foundation/SmartMutableMemoryBlock.xojo_code;&h42277C14;&h34FECEF5;false -Class=NSData;Modules/Foundation/NSData.xojo_code;&hD8F472;&h34FECEF5;false -Class=NSUserDefaults;Modules/Foundation/NSUserDefaults.xojo_code;&h72A1;&h34FECEF5;false -Class=NSURL;Modules/Foundation/NSURL.xojo_code;&hD7B38F;&h34FECEF5;false -Class=NSError;Modules/Foundation/NSError.xojo_code;&h57C4BF5B;&h34FECEF5;false -Class=NSSet;Modules/Foundation/NSSet.xojo_code;&h1579DD7;&h34FECEF5;false -Class=NSMutableSet;Modules/Foundation/NSMutableSet.xojo_code;&h16799E3;&h34FECEF5;false -Module=Extensions;Modules/Extensions.xojo_code;&h10825132;&hE7A9798;false -Class=ImprovediOSTable;Modules/Extensions/ImprovediOSTable.xojo_code;&h217F7FFF;&h10825132;false -Class=MFMailComposeViewController;Modules/Extensions/MFMailComposeViewController.xojo_code;&h6395315D;&h10825132;false -Class=UIVisualEffect;Modules/Extensions/UIVisualEffect.xojo_code;&h3F590AA8;&h10825132;false -Class=UIVisualEffectView;Modules/Extensions/UIVisualEffectView.xojo_code;&h61B91D73;&h10825132;false -Class=EditableIOSImage;Modules/Extensions/EditableIOSImage.xojo_code;&h1BAA704C;&h10825132;false -Class=ScrollView;Modules/Extensions/ScrollView.xojo_code;&h760AFE0E;&h10825132;false -Class=Camera;Modules/Extensions/Camera.xojo_code;&h81AAF03;&h10825132;false -Class=UIPickerViewDataSource;Modules/Extensions/UIPickerViewDataSource.xojo_code;&h4B2C8FEC;&h10825132;false -Class=PickerView;Modules/Extensions/PickerView.xojo_code;&h6849651C;&h10825132;false -Class=UIStepper;Modules/Extensions/UIStepper.xojo_code;&h2454FAA;&h10825132;false -Class=PickerViewMultiline;Modules/Extensions/PickerViewMultiline.xojo_code;&h21100A38;&h10825132;false -Class=UIPickerViewDataSourceMultiline;Modules/Extensions/UIPickerViewDataSourceMultiline.xojo_code;&h240F3523;&h10825132;false -Class=UIBlurEffect;Modules/Extensions/UIBlurEffect.xojo_code;&h6ECAFDBB;&h10825132;false -Class=UIVibrancyEffect;Modules/Extensions/UIVibrancyEffect.xojo_code;&h1A69E7C;&h10825132;false -Class=Reachability;Modules/Extensions/Reachability.xojo_code;&h3CEB9C17;&h10825132;false -Class=SwipeView;Modules/Extensions/SwipeView.xojo_code;&h21069A0C;&h10825132;false -Class=GenericView;Modules/Extensions/GenericView.xojo_code;&h705F77FF;&h10825132;false -Class=MPMoviePlayerController;Modules/Extensions/MPMoviePlayerController.xojo_code;&h4EDA97FF;&h10825132;false -Module=UIKit;Modules/UIKit.xojo_code;&h5DD9374;&hE7A9798;false -Class=UIDevice;Modules/UIKit/UIDevice.xojo_code;&h372CAB9B;&h5DD9374;false -Class=UILongPressGestureRecognizer;Modules/UIKit/UILongPressGestureRecognizer.xojo_code;&h9A097FF;&h5DD9374;false -Class=UIViewController;Modules/UIKit/UIViewController.xojo_code;&h2915130;&h5DD9374;false -Class=UIActivityViewController;Modules/UIKit/UIActivityViewController.xojo_code;&h28F1AD2;&h5DD9374;false -Class=UISearchBar;Modules/UIKit/UISearchBar.xojo_code;&h274116C;&h5DD9374;false -Class=UIGestureRecognizer;Modules/UIKit/UIGestureRecognizer.xojo_code;&h71EE6B07;&h5DD9374;false -Class=UIResponder;Modules/UIKit/UIResponder.xojo_code;&h2D360C2D;&h5DD9374;false -Class=UIView;Modules/UIKit/UIView.xojo_code;&h3759B731;&h5DD9374;false -Class=TargetClassMethodHelper;Modules/UIKit/TargetClassMethodHelper.xojo_code;&h24B1870F;&h5DD9374;false -Class=UINavigationController;Modules/UIKit/UINavigationController.xojo_code;&h35452163;&h5DD9374;false -Class=UISwipeGestureRecognizer;Modules/UIKit/UISwipeGestureRecognizer.xojo_code;&h558F7790;&h5DD9374;false -Class=UIColor;Modules/UIKit/UIColor.xojo_code;&hE1A86FB;&h5DD9374;false -Class=UITouch;Modules/UIKit/UITouch.xojo_code;&h7A8000E4;&h5DD9374;false -Class=UISearchController;Modules/UIKit/UISearchController.xojo_code;&h2741164;&h5DD9374;false -Class=UIActivity;Modules/UIKit/UIActivity.xojo_code;&h17A84019;&h5DD9374;false -Class=UIRotationGestureRecognizer;Modules/UIKit/UIRotationGestureRecognizer.xojo_code;&h4269E27B;&h5DD9374;false -Class=UITapGestureRecognizer;Modules/UIKit/UITapGestureRecognizer.xojo_code;&h341EE301;&h5DD9374;false -Class=UIPinchGestureRecognizer;Modules/UIKit/UIPinchGestureRecognizer.xojo_code;&h7906C68;&h5DD9374;false -Class=UIImagePickerController;Modules/UIKit/UIImagePickerController.xojo_code;&h67405F;&h5DD9374;false -Module=CoreMotion;Modules/CoreMotion.xojo_code;&h58DA52FC;&hE7A9798;false -Class=CMMotionManager;Modules/CoreMotion/CMMotionManager.xojo_code;&h657E8D9C;&h58DA52FC;false -Class=CMLogItem;Modules/CoreMotion/CMLogItem.xojo_code;&h69ECBE9;&h58DA52FC;false -Class=CMAccelerometerData;Modules/CoreMotion/CMAccelerometerData.xojo_code;&h5F93CA4D;&h58DA52FC;false -Class=CMGyroData;Modules/CoreMotion/CMGyroData.xojo_code;&h6AEF09B9;&h58DA52FC;false -Class=CMDeviceMotion;Modules/CoreMotion/CMDeviceMotion.xojo_code;&h62BF3A0F;&h58DA52FC;false -Module=QRCode;Modules/QRCode.xojo_code;&h7F59BA30;&hE7A9798;false -Module=AVFoundation;Modules/AVFoundation.xojo_code;&h674A0FFF;&hE7A9798;false -Class=AVAudioPlayer;Modules/AVFoundation/AVAudioPlayer.xojo_code;&hE7D5DD;&h674A0FFF;false -Class=AVMetadataMachineReadableCodeObject;Modules/AVFoundation/AVMetadataMachineReadableCodeObject.xojo_code;&hEBA3B9;&h674A0FFF;false -Class=AVMetadataFaceObject;Modules/AVFoundation/AVMetadataFaceObject.xojo_code;&hEBA3C1;&h674A0FFF;false -Class=AVMetadataObject;Modules/AVFoundation/AVMetadataObject.xojo_code;&hEBA3C2;&h674A0FFF;false -Class=AVCaptureVideoPreviewLayer;Modules/AVFoundation/AVCaptureVideoPreviewLayer.xojo_code;&h414ECFFF;&h674A0FFF;false -Class=AVCaptureDeviceInput;Modules/AVFoundation/AVCaptureDeviceInput.xojo_code;&hE9C21A;&h674A0FFF;false -Class=AVCaptureDevice;Modules/AVFoundation/AVCaptureDevice.xojo_code;&h44C707FF;&h674A0FFF;false -Class=AVCaptureOutput;Modules/AVFoundation/AVCaptureOutput.xojo_code;&h277607FF;&h674A0FFF;false -Class=AVCaptureMetadataOutput;Modules/AVFoundation/AVCaptureMetadataOutput.xojo_code;&h51D047FF;&h674A0FFF;false -Class=AVCaptureSession;Modules/AVFoundation/AVCaptureSession.xojo_code;&hE9C219;&h674A0FFF;false -Class=AVCaptureInput;Modules/AVFoundation/AVCaptureInput.xojo_code;&h221877FF;&h674A0FFF;false -Class=AVCaptureConnection;Modules/AVFoundation/AVCaptureConnection.xojo_code;&hED9DDE;&h674A0FFF;false -Class=AVCaptureDeviceFormat;Modules/AVFoundation/AVCaptureDeviceFormat.xojo_code;&hEF50D7;&h674A0FFF;false -Class=AVCaptureInputPort;Modules/AVFoundation/AVCaptureInputPort.xojo_code;&hF59260;&h674A0FFF;false -Class=AVAudioRecorder;Modules/AVFoundation/AVAudioRecorder.xojo_code;&hE7033F;&h674A0FFF;false -Class=AVAudioSession;Modules/AVFoundation/AVAudioSession.xojo_code;&hE70343;&h674A0FFF;false -Class=AVCaptureAudioDataOutput;Modules/AVFoundation/AVCaptureAudioDataOutput.xojo_code;&h4FC03FFF;&h674A0FFF;false -Class=AVCaptureFileOutput;Modules/AVFoundation/AVCaptureFileOutput.xojo_code;&hE70344;&h674A0FFF;false -Class=AVCaptureMovieFileOutput;Modules/AVFoundation/AVCaptureMovieFileOutput.xojo_code;&h7E06E7FF;&h674A0FFF;false -Class=AVSpeechSynthesisVoice;Modules/AVFoundation/AVSpeechSynthesisVoice.xojo_code;&h16C653B;&h674A0FFF;false -Class=AVSpeechUtterance;Modules/AVFoundation/AVSpeechUtterance.xojo_code;&h16C6544;&h674A0FFF;false -Class=AVSpeechSynthesizer;Modules/AVFoundation/AVSpeechSynthesizer.xojo_code;&h6ADABFFF;&h674A0FFF;false -Class=AVAudioSessionDataSourceDescription;Modules/AVFoundation/AVAudioSessionDataSourceDescription.xojo_code;&h25D72DF;&h674A0FFF;false -Class=AVAudioSessionPortDescription;Modules/AVFoundation/AVAudioSessionPortDescription.xojo_code;&h25D72E1;&h674A0FFF;false -Class=AVAudioSessionRouteDescription;Modules/AVFoundation/AVAudioSessionRouteDescription.xojo_code;&h673B57FF;&h674A0FFF;false -Class=AVCaptureStillImageOutput;Modules/AVFoundation/AVCaptureStillImageOutput.xojo_code;&h35027FF;&h674A0FFF;false -Module=QuartzCore;Modules/QuartzCore.xojo_code;&h2630BFFF;&hE7A9798;false -Class=CALayer;Modules/QuartzCore/CALayer.xojo_code;&h41009FFF;&h2630BFFF;false -Module=StoreKit;Modules/StoreKit.xojo_code;&hE69D7B4;&hE7A9798;false -Class=SKReceiptRefreshRequest;Modules/StoreKit/SKReceiptRefreshRequest.xojo_code;&h1E8205DA;&hE69D7B4;false -Class=SKProductsRequest;Modules/StoreKit/SKProductsRequest.xojo_code;&h1B4F4A45;&hE69D7B4;false -Class=SKRequest;Modules/StoreKit/SKRequest.xojo_code;&h71E5FD5D;&hE69D7B4;false -Class=SKProductsResponse;Modules/StoreKit/SKProductsResponse.xojo_code;&h18E2ED7;&hE69D7B4;false -Class=SKProduct;Modules/StoreKit/SKProduct.xojo_code;&h2AC324F6;&hE69D7B4;false -Class=SKPaymentTransaction;Modules/StoreKit/SKPaymentTransaction.xojo_code;&h4B4496E2;&hE69D7B4;false -Class=SKPaymentQueue;Modules/StoreKit/SKPaymentQueue.xojo_code;&h48B9F0B0;&hE69D7B4;false -Class=SKMutablePayment;Modules/StoreKit/SKMutablePayment.xojo_code;&h350CE1F4;&hE69D7B4;false -Class=SKPayment;Modules/StoreKit/SKPayment.xojo_code;&h78035E43;&hE69D7B4;false -Class=SKDownload;Modules/StoreKit/SKDownload.xojo_code;&h18E2ED6;&hE69D7B4;false -Class=PaymentTransactionObserver;Modules/StoreKit/PaymentTransactionObserver.xojo_code;&h165D47FF;&hE69D7B4;false -Class=SKStoreProductViewController;Modules/StoreKit/SKStoreProductViewController.xojo_code;&hC7A77FF;&hE69D7B4;false -Class=InAppPurchaseHelper;Modules/StoreKit/InAppPurchaseHelper.xojo_code;&hFD197FF;&hE69D7B4;false -Module=Notification_Center;Modules/Notification_Center.xojo_code;&h665DC900;&hE7A9798;false -Class=NotificationRelation;Modules/Notification_Center/NotificationRelation.xojo_code;&h3E3E344;&h665DC900;false -Class=Notification;Modules/Notification_Center/Notification.xojo_code;&h67CF0426;&h665DC900;false -Class=NotificationCenter;Modules/Notification_Center/NotificationCenter.xojo_code;&h78A56CCB;&h665DC900;false -Class=LoadProductsCompletionHandlerWrapper;Modules/StoreKit/LoadProductsCompletionHandlerWrapper.xojo_code;&h477EDFFF;&hE69D7B4;false -Interface=SKStoreProductViewControllerObserver;Modules/StoreKit/SKStoreProductViewControllerObserver.xojo_code;&h3AC6DFFF;&hE69D7B4;false -Class=UIAlertAction;Modules/UIKit/UIAlertAction.xojo_code;&h247E17FF;&h5DD9374;false -Class=UIAlertActionCompletionHandlerWrapper;Modules/UIKit/UIAlertActionCompletionHandlerWrapper.xojo_code;&h6760AFFF;&h5DD9374;false -Class=UIAlertController;Modules/UIKit/UIAlertController.xojo_code;&hBF14A3;&h5DD9374;false -iOSView=UIAlertView;ExampleViews/UIAlertView.xojo_code;&h539417FF;&h1989717F;false -Module=JKRegEx;Modules/JKRegEx.xojo_code;&h23DFB7FF;&hE7A9798;false -Class=NSRegularExpression;Modules/JKRegEx/NSRegularExpression.xojo_code;&h6E4BAC;&h23DFB7FF;false -Class=RegExOptions;Modules/JKRegEx/RegExOptions.xojo_code;&h29B037FF;&h23DFB7FF;false -Class=RegExMatch;Modules/JKRegEx/RegExMatch.xojo_code;&h7A66E7FF;&h23DFB7FF;false -Class=RegEx;Modules/JKRegEx/RegEx.xojo_code;&h58D38FFF;&h23DFB7FF;false -Class=NSTextCheckingResult;Modules/JKRegEx/NSTextCheckingResult.xojo_code;&h6FE8F4;&h23DFB7FF;false -Class=RegExTests;Unit Tests/RegExTests.xojo_code;&hA0F27FF;&h79CC2FFF;false -iOSView=ShakingView;ExampleViews/ShakingView.xojo_code;&h4EC86FFF;&h1989717F;false -Folder=GameKitFolder;Modules/GameKitFolder;&h3F0BFFF;&hE7A9798;false -Class=AchievementAndScoreHelper;Modules/GameKitFolder/AchievementAndScoreHelper.xojo_code;&h28C47FF;&h3F0BFFF;false -Interface=TurnBasedMatchHelperObserver;Modules/GameKitFolder/TurnBasedMatchHelperObserver.xojo_code;&h5906AFFF;&h3F0BFFF;false -Class=TurnBasedMatchHelper;Modules/GameKitFolder/TurnBasedMatchHelper.xojo_code;&h6125BE;&h3F0BFFF;false -Class=AuthenticationHelper;Modules/GameKitFolder/AuthenticationHelper.xojo_code;&h184D2FFF;&h3F0BFFF;false -Interface=StandardMatchHelperObserver;Modules/GameKitFolder/StandardMatchHelperObserver.xojo_code;&h5BFB6FFF;&h3F0BFFF;false -Class=StandardMatchHelper;Modules/GameKitFolder/StandardMatchHelper.xojo_code;&h35F32F;&h3F0BFFF;false -Module=GameKit;Modules/GameKitFolder/GameKit.xojo_code;&h6F5AA7FF;&h3F0BFFF;false -Class=GKChallenge;Modules/GameKitFolder/GameKit/GKChallenge.xojo_code;&h5CD9C562;&h6F5AA7FF;false -Class=GKVoiceChat;Modules/GameKitFolder/GameKit/GKVoiceChat.xojo_code;&h640A446C;&h6F5AA7FF;false -Class=GKTurnBasedParticipant;Modules/GameKitFolder/GameKit/GKTurnBasedParticipant.xojo_code;&h44B370A5;&h6F5AA7FF;false -Class=GKTurnBasedMatch;Modules/GameKitFolder/GameKit/GKTurnBasedMatch.xojo_code;&h158FF53C;&h6F5AA7FF;false -Class=GKTurnBasedExchangeReply;Modules/GameKitFolder/GameKit/GKTurnBasedExchangeReply.xojo_code;&h5F4B9505;&h6F5AA7FF;false -Class=GKTurnBasedExchange;Modules/GameKitFolder/GameKit/GKTurnBasedExchange.xojo_code;&h39CB8558;&h6F5AA7FF;false -Class=GKScore;Modules/GameKitFolder/GameKit/GKScore.xojo_code;&h7ED4EBFB;&h6F5AA7FF;false -Class=GKSavedGame;Modules/GameKitFolder/GameKit/GKSavedGame.xojo_code;&h4CEC7654;&h6F5AA7FF;false -Class=GKLocalPlayer;Modules/GameKitFolder/GameKit/GKLocalPlayer.xojo_code;&h5039AE99;&h6F5AA7FF;false -Class=GKPlayer;Modules/GameKitFolder/GameKit/GKPlayer.xojo_code;&h2BB5618B;&h6F5AA7FF;false -Class=GKNotificationBanner;Modules/GameKitFolder/GameKit/GKNotificationBanner.xojo_code;&h1929895D;&h6F5AA7FF;false -Class=GKMatchRequest;Modules/GameKitFolder/GameKit/GKMatchRequest.xojo_code;&h730F64B0;&h6F5AA7FF;false -Class=GKMatchmaker;Modules/GameKitFolder/GameKit/GKMatchmaker.xojo_code;&h76188238;&h6F5AA7FF;false -Class=GKMatch;Modules/GameKitFolder/GameKit/GKMatch.xojo_code;&h59E84BF3;&h6F5AA7FF;false -Class=GKLeaderboardSet;Modules/GameKitFolder/GameKit/GKLeaderboardSet.xojo_code;&h7517990C;&h6F5AA7FF;false -Class=GKLeaderboard;Modules/GameKitFolder/GameKit/GKLeaderboard.xojo_code;&h3D6388E4;&h6F5AA7FF;false -Class=GKInvite;Modules/GameKitFolder/GameKit/GKInvite.xojo_code;&h7C4D1CEE;&h6F5AA7FF;false -Class=GKScoreChallenge;Modules/GameKitFolder/GameKit/GKScoreChallenge.xojo_code;&h1B7FE992;&h6F5AA7FF;false -Class=GKAchievementChallenge;Modules/GameKitFolder/GameKit/GKAchievementChallenge.xojo_code;&h65B73F0;&h6F5AA7FF;false -Class=GKAchievement;Modules/GameKitFolder/GameKit/GKAchievement.xojo_code;&h1445B6A;&h6F5AA7FF;false -Class=GKAchievementDescription;Modules/GameKitFolder/GameKit/GKAchievementDescription.xojo_code;&h1445B69;&h6F5AA7FF;false -Class=NSErrorCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/NSErrorCompletionHandlerWrapper.xojo_code;&h51B3FFFF;&h6F5AA7FF;false -Class=GKLocalPlayerListener;Modules/GameKitFolder/GameKit/GKLocalPlayerListener.xojo_code;&h1D4204;&h6F5AA7FF;false -Class=NSArrayCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/NSArrayCompletionHandlerWrapper.xojo_code;&h66D1DFFF;&h6F5AA7FF;false -Class=UIImageCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/UIImageCompletionHandlerWrapper.xojo_code;&h3B76F7FF;&h6F5AA7FF;false -Class=NSDataCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/NSDataCompletionHandlerWrapper.xojo_code;&h63EE7FF;&h6F5AA7FF;false -Class=GKMatchmakerViewController;Modules/GameKitFolder/GameKit/GKMatchmakerViewController.xojo_code;&h3723CE;&h6F5AA7FF;false -Interface=GKFriendRequestComposeViewControllerObserver;Modules/GameKitFolder/GameKit/GKFriendRequestComposeViewControllerObserver.xojo_code;&h2307D7FF;&h6F5AA7FF;false -Class=GKGameCenterViewController;Modules/GameKitFolder/GameKit/GKGameCenterViewController.xojo_code;&h601154;&h6F5AA7FF;false -Interface=GKGameCenterViewControllerObserver;Modules/GameKitFolder/GameKit/GKGameCenterViewControllerObserver.xojo_code;&h6D0F4FFF;&h6F5AA7FF;false -Class=GKTurnBasedMatchmakerViewController;Modules/GameKitFolder/GameKit/GKTurnBasedMatchmakerViewController.xojo_code;&h5EC55D;&h6F5AA7FF;false -Class=GKFriendRequestComposeViewController;Modules/GameKitFolder/GameKit/GKFriendRequestComposeViewController.xojo_code;&h33418FFF;&h6F5AA7FF;false -Class=GKMatchCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKMatchCompletionHandlerWrapper.xojo_code;&h53B6C7FF;&h6F5AA7FF;false -Class=GKPlayerCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKPlayerCompletionHandlerWrapper.xojo_code;&h20AA7FFF;&h6F5AA7FF;false -Class=GKTurnbasedMatchCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKTurnbasedMatchCompletionHandlerWrapper.xojo_code;&h4E134FFF;&h6F5AA7FF;false -Class=IntegerCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/IntegerCompletionHandlerWrapper.xojo_code;&h61E777FF;&h6F5AA7FF;false -Class=TextCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/TextCompletionHandlerWrapper.xojo_code;&h1C9127FF;&h6F5AA7FF;false -Class=GKTurnbasedExchangeCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKTurnbasedExchangeCompletionHandlerWrapper.xojo_code;&h1A26A7FF;&h6F5AA7FF;false -iOSView=StandardGame;ExampleViews/GameKitViews/StandardGame.xojo_code;&hECF3FFF;&h43718FFF;false -iOSView=GameKitDemoView;ExampleViews/GameKitViews/GameKitDemoView.xojo_code;&h340FA7FF;&h43718FFF;false -Module=iCloudStuff;Modules/iCloudStuff.xojo_code;&h7D6F17FF;&hE7A9798;false -Class=UIDocumentPickerViewController;Modules/iCloudStuff/UIDocumentPickerViewController.xojo_code;&hD703BA;&h7D6F17FF;false -LaunchImages=iOSLaunchImages;iOSLaunchImages.xojo_image;&h4CC3CFFF;&h0;false -AppIcons=AppIcon;AppIcon.xojo_image;&h3BAA6FFF;&h0;false -Folder=XojoUnit;XojoUnit;&h2516B04D;&h0;false -Folder=Tests;XojoUnit/Tests;&h44C729E7;&h2516B04D;false -Class=XojoUnitTests;XojoUnit/Tests/XojoUnitTests.xojo_code;&h45CA76B3;&h44C729E7;false -Class=XojoUnitFailTests;XojoUnit/Tests/XojoUnitFailTests.xojo_code;&h2FC99FFF;&h44C729E7;false -Folder=TestFramework;XojoUnit/TestFramework;&h3E1A9B41;&h2516B04D;false -Class=TestGroup;XojoUnit/TestFramework/TestGroup.xojo_code;&h6F90619D;&h3E1A9B41;false -Class=TestController;XojoUnit/TestFramework/TestController.xojo_code;&h6FF90549;&h3E1A9B41;false -Class=Assert;XojoUnit/TestFramework/Assert.xojo_code;&h6F374736;&h3E1A9B41;false -Class=TestResult;XojoUnit/TestFramework/TestResult.xojo_code;&h1624A4EB;&h3E1A9B41;false -iOSView=XojoUnitTestGroupView;XojoUnit/XojoUnitTestGroupView.xojo_code;&h1A070FFF;&h2516B04D;false -iOSView=XojoUnitTestMethodView;XojoUnit/XojoUnitTestMethodView.xojo_code;&h38986FFF;&h2516B04D;false -iOSView=XojoUnitTestDetailsView;XojoUnit/XojoUnitTestDetailsView.xojo_code;&h215E17FF;&h2516B04D;false +Class=App;App.xojo_code;&h000000005FAFE765;&h0000000000000000;false +iOSScreen=iPhoneScreen;iPhoneScreen.xojo_code;&h0000000015810A9D;&h0000000000000000;false +iOSScreen=iPadScreen;iPadScreen.xojo_code;&h000000004AE01618;&h0000000000000000;false +BuildSteps=Build Automation;Build Automation.xojo_code;&h0000000035D13E19;&h0000000000000000;false +Folder=ExampleViews;ExampleViews;&h000000001989717F;&h0000000000000000;false +Folder=GameKitViews;ExampleViews/GameKitViews;&h0000000043718FFF;&h000000001989717F;false +iOSView=EmptyView;ExampleViews/EmptyView.xojo_code;&h000000005BD067FF;&h000000001989717F;false +Class=iOSTestController;iOSTestController.xojo_code;&h000000003FC78D4E;&h0000000000000000;false +Folder=Unit Tests;Unit Tests;&h0000000079CC2FFF;&h0000000000000000;false +iOSView=RecordPlayVideo;ExampleViews/RecordPlayVideo.xojo_code;&h000000006557DFFF;&h000000001989717F;false +iOSView=CoreMotionView;ExampleViews/CoreMotionView.xojo_code;&h000000006BDCCA6C;&h000000001989717F;false +iOSView=ReachabilityView;ExampleViews/ReachabilityView.xojo_code;&h000000004920F51B;&h000000001989717F;false +iOSView=SoundsView;ExampleViews/SoundsView.xojo_code;&h0000000037C78F80;&h000000001989717F;false +iOSView=ReadQRView;ExampleViews/ReadQRView.xojo_code;&h00000000359C4299;&h000000001989717F;false +iOSView=CreateQRView;ExampleViews/CreateQRView.xojo_code;&h000000003FB62918;&h000000001989717F;false +iOSView=MainView;ExampleViews/MainView.xojo_code;&h0000000063DB034D;&h000000001989717F;false +iOSView=improvediOSTableView;ExampleViews/improvediOSTableView.xojo_code;&h000000001BC87FFF;&h000000001989717F;false +iOSView=ActivityView;ExampleViews/ActivityView.xojo_code;&h00000000379E3F9B;&h000000001989717F;false +iOSView=EmailView;ExampleViews/EmailView.xojo_code;&h000000001FA03105;&h000000001989717F;false +iOSView=CameraView;ExampleViews/CameraView.xojo_code;&h00000000734B3627;&h000000001989717F;false +iOSView=MissingControlsView;ExampleViews/MissingControlsView.xojo_code;&h000000003DCAE9B5;&h000000001989717F;false +iOSView=KeychainView;ExampleViews/KeychainView.xojo_code;&h000000001276C53B;&h000000001989717F;false +Folder=AVFoundationViews;ExampleViews/AVFoundationViews;&h000000005074C7FF;&h000000001989717F;false +iOSView=FlashlightView;ExampleViews/AVFoundationViews/FlashlightView.xojo_code;&h00000000164847FF;&h000000005074C7FF;false +iOSView=PictureView;ExampleViews/AVFoundationViews/PictureView.xojo_code;&h000000001ECD9AB1;&h000000005074C7FF;false +iOSView=StillImageView;ExampleViews/AVFoundationViews/StillImageView.xojo_code;&h000000004D032FFF;&h000000005074C7FF;false +iOSView=RecordPlayAudioView;ExampleViews/AVFoundationViews/RecordPlayAudioView.xojo_code;&h00000000741A9FFF;&h000000005074C7FF;false +iOSView=SpeechSynthesisView;ExampleViews/AVFoundationViews/SpeechSynthesisView.xojo_code;&h000000003ECDAFFF;&h000000005074C7FF;false +iOSView=AVFoundationDemoView;ExampleViews/AVFoundationViews/AVFoundationDemoView.xojo_code;&h0000000031CCEFFF;&h000000005074C7FF;false +iOSView=BarcodeScannerView;ExampleViews/AVFoundationViews/BarcodeScannerView.xojo_code;&h00000000636B97FF;&h000000005074C7FF;false +Folder=Modules;Modules;&h000000000E7A9798;&h0000000000000000;false +Module=KeychainServices;Modules/KeychainServices.xojo_code;&h00000000772DAE8A;&h000000000E7A9798;false +Class=JK_KeychainItem;Modules/KeychainServices/JK_KeychainItem.xojo_code;&h000000001BF5DAEF;&h00000000772DAE8A;false +Module=Foundation;Modules/Foundation.xojo_code;&h0000000034FECEF5;&h000000000E7A9798;false +Class=NSUUID;Modules/Foundation/NSUUID.xojo_code;&h00000000463199EB;&h0000000034FECEF5;false +Class=NSMutableData;Modules/Foundation/NSMutableData.xojo_code;&h0000000000D5E04B;&h0000000034FECEF5;false +Class=NSArray;Modules/Foundation/NSArray.xojo_code;&h000000001A12E5DF;&h0000000034FECEF5;false +Class=NSDictionary;Modules/Foundation/NSDictionary.xojo_code;&h000000003E1BC095;&h0000000034FECEF5;false +Class=NSMutableArray;Modules/Foundation/NSMutableArray.xojo_code;&h000000004B16BDAC;&h0000000034FECEF5;false +Class=NSMutableDictionary;Modules/Foundation/NSMutableDictionary.xojo_code;&h000000001000D7B4;&h0000000034FECEF5;false +Class=NSString;Modules/Foundation/NSString.xojo_code;&h000000006B9BDF3E;&h0000000034FECEF5;false +Class=NSDate;Modules/Foundation/NSDate.xojo_code;&h000000004FA72A69;&h0000000034FECEF5;false +Class=NSObject;Modules/Foundation/NSObject.xojo_code;&h000000002D9E45A4;&h0000000034FECEF5;false +Class=NSRect;Modules/Foundation/NSRect.xojo_code;&h0000000058F94107;&h0000000034FECEF5;false +Class=NSPoint;Modules/Foundation/NSPoint.xojo_code;&h00000000541CA1D9;&h0000000034FECEF5;false +Class=NSSize;Modules/Foundation/NSSize.xojo_code;&h0000000050D6905B;&h0000000034FECEF5;false +Class=SmartMemoryBlock;Modules/Foundation/SmartMemoryBlock.xojo_code;&h0000000025AA10E6;&h0000000034FECEF5;false +Class=SmartMutableMemoryBlock;Modules/Foundation/SmartMutableMemoryBlock.xojo_code;&h0000000042277C14;&h0000000034FECEF5;false +Class=NSData;Modules/Foundation/NSData.xojo_code;&h0000000000D8F472;&h0000000034FECEF5;false +Class=NSUserDefaults;Modules/Foundation/NSUserDefaults.xojo_code;&h00000000000072A1;&h0000000034FECEF5;false +Class=NSURL;Modules/Foundation/NSURL.xojo_code;&h0000000000D7B38F;&h0000000034FECEF5;false +Class=NSError;Modules/Foundation/NSError.xojo_code;&h0000000057C4BF5B;&h0000000034FECEF5;false +Class=NSSet;Modules/Foundation/NSSet.xojo_code;&h0000000001579DD7;&h0000000034FECEF5;false +Class=NSMutableSet;Modules/Foundation/NSMutableSet.xojo_code;&h00000000016799E3;&h0000000034FECEF5;false +Module=Extensions;Modules/Extensions.xojo_code;&h0000000010825132;&h000000000E7A9798;false +Class=ImprovediOSTable;Modules/Extensions/ImprovediOSTable.xojo_code;&h00000000217F7FFF;&h0000000010825132;false +Class=MFMailComposeViewController;Modules/Extensions/MFMailComposeViewController.xojo_code;&h000000006395315D;&h0000000010825132;false +Class=UIVisualEffect;Modules/Extensions/UIVisualEffect.xojo_code;&h000000003F590AA8;&h0000000010825132;false +Class=UIVisualEffectView;Modules/Extensions/UIVisualEffectView.xojo_code;&h0000000061B91D73;&h0000000010825132;false +Class=EditableIOSImage;Modules/Extensions/EditableIOSImage.xojo_code;&h000000001BAA704C;&h0000000010825132;false +Class=ScrollView;Modules/Extensions/ScrollView.xojo_code;&h00000000760AFE0E;&h0000000010825132;false +Class=Camera;Modules/Extensions/Camera.xojo_code;&h00000000081AAF03;&h0000000010825132;false +Class=UIPickerViewDataSource;Modules/Extensions/UIPickerViewDataSource.xojo_code;&h000000004B2C8FEC;&h0000000010825132;false +Class=PickerView;Modules/Extensions/PickerView.xojo_code;&h000000006849651C;&h0000000010825132;false +Class=UIStepper;Modules/Extensions/UIStepper.xojo_code;&h0000000002454FAA;&h0000000010825132;false +Class=PickerViewMultiline;Modules/Extensions/PickerViewMultiline.xojo_code;&h0000000021100A38;&h0000000010825132;false +Class=UIPickerViewDataSourceMultiline;Modules/Extensions/UIPickerViewDataSourceMultiline.xojo_code;&h00000000240F3523;&h0000000010825132;false +Class=UIBlurEffect;Modules/Extensions/UIBlurEffect.xojo_code;&h000000006ECAFDBB;&h0000000010825132;false +Class=UIVibrancyEffect;Modules/Extensions/UIVibrancyEffect.xojo_code;&h0000000001A69E7C;&h0000000010825132;false +Class=Reachability;Modules/Extensions/Reachability.xojo_code;&h000000003CEB9C17;&h0000000010825132;false +Class=SwipeView;Modules/Extensions/SwipeView.xojo_code;&h0000000021069A0C;&h0000000010825132;false +Class=GenericView;Modules/Extensions/GenericView.xojo_code;&h00000000705F77FF;&h0000000010825132;false +Class=MPMoviePlayerController;Modules/Extensions/MPMoviePlayerController.xojo_code;&h000000004EDA97FF;&h0000000010825132;false +Module=UIKit;Modules/UIKit.xojo_code;&h0000000005DD9374;&h000000000E7A9798;false +Class=UIDevice;Modules/UIKit/UIDevice.xojo_code;&h00000000372CAB9B;&h0000000005DD9374;false +Class=UILongPressGestureRecognizer;Modules/UIKit/UILongPressGestureRecognizer.xojo_code;&h0000000009A097FF;&h0000000005DD9374;false +Class=UIViewController;Modules/UIKit/UIViewController.xojo_code;&h0000000002915130;&h0000000005DD9374;false +Class=UIActivityViewController;Modules/UIKit/UIActivityViewController.xojo_code;&h00000000028F1AD2;&h0000000005DD9374;false +Class=UISearchBar;Modules/UIKit/UISearchBar.xojo_code;&h000000000274116C;&h0000000005DD9374;false +Class=UIGestureRecognizer;Modules/UIKit/UIGestureRecognizer.xojo_code;&h0000000071EE6B07;&h0000000005DD9374;false +Class=UIResponder;Modules/UIKit/UIResponder.xojo_code;&h000000002D360C2D;&h0000000005DD9374;false +Class=UIView;Modules/UIKit/UIView.xojo_code;&h000000003759B731;&h0000000005DD9374;false +Class=TargetClassMethodHelper;Modules/UIKit/TargetClassMethodHelper.xojo_code;&h0000000024B1870F;&h0000000005DD9374;false +Class=UINavigationController;Modules/UIKit/UINavigationController.xojo_code;&h0000000035452163;&h0000000005DD9374;false +Class=UISwipeGestureRecognizer;Modules/UIKit/UISwipeGestureRecognizer.xojo_code;&h00000000558F7790;&h0000000005DD9374;false +Class=UIColor;Modules/UIKit/UIColor.xojo_code;&h000000000E1A86FB;&h0000000005DD9374;false +Class=UITouch;Modules/UIKit/UITouch.xojo_code;&h000000007A8000E4;&h0000000005DD9374;false +Class=UISearchController;Modules/UIKit/UISearchController.xojo_code;&h0000000002741164;&h0000000005DD9374;false +Class=UIActivity;Modules/UIKit/UIActivity.xojo_code;&h0000000017A84019;&h0000000005DD9374;false +Class=UIRotationGestureRecognizer;Modules/UIKit/UIRotationGestureRecognizer.xojo_code;&h000000004269E27B;&h0000000005DD9374;false +Class=UITapGestureRecognizer;Modules/UIKit/UITapGestureRecognizer.xojo_code;&h00000000341EE301;&h0000000005DD9374;false +Class=UIPinchGestureRecognizer;Modules/UIKit/UIPinchGestureRecognizer.xojo_code;&h0000000007906C68;&h0000000005DD9374;false +Class=UIImagePickerController;Modules/UIKit/UIImagePickerController.xojo_code;&h000000000067405F;&h0000000005DD9374;false +Module=CoreMotion;Modules/CoreMotion.xojo_code;&h0000000058DA52FC;&h000000000E7A9798;false +Class=CMMotionManager;Modules/CoreMotion/CMMotionManager.xojo_code;&h00000000657E8D9C;&h0000000058DA52FC;false +Class=CMLogItem;Modules/CoreMotion/CMLogItem.xojo_code;&h00000000069ECBE9;&h0000000058DA52FC;false +Class=CMAccelerometerData;Modules/CoreMotion/CMAccelerometerData.xojo_code;&h000000005F93CA4D;&h0000000058DA52FC;false +Class=CMGyroData;Modules/CoreMotion/CMGyroData.xojo_code;&h000000006AEF09B9;&h0000000058DA52FC;false +Class=CMDeviceMotion;Modules/CoreMotion/CMDeviceMotion.xojo_code;&h0000000062BF3A0F;&h0000000058DA52FC;false +Module=QRCode;Modules/QRCode.xojo_code;&h000000007F59BA30;&h000000000E7A9798;false +Module=AVFoundation;Modules/AVFoundation.xojo_code;&h00000000674A0FFF;&h000000000E7A9798;false +Class=AVAudioPlayer;Modules/AVFoundation/AVAudioPlayer.xojo_code;&h0000000000E7D5DD;&h00000000674A0FFF;false +Class=AVMetadataMachineReadableCodeObject;Modules/AVFoundation/AVMetadataMachineReadableCodeObject.xojo_code;&h0000000000EBA3B9;&h00000000674A0FFF;false +Class=AVMetadataFaceObject;Modules/AVFoundation/AVMetadataFaceObject.xojo_code;&h0000000000EBA3C1;&h00000000674A0FFF;false +Class=AVMetadataObject;Modules/AVFoundation/AVMetadataObject.xojo_code;&h0000000000EBA3C2;&h00000000674A0FFF;false +Class=AVCaptureVideoPreviewLayer;Modules/AVFoundation/AVCaptureVideoPreviewLayer.xojo_code;&h00000000414ECFFF;&h00000000674A0FFF;false +Class=AVCaptureDeviceInput;Modules/AVFoundation/AVCaptureDeviceInput.xojo_code;&h0000000000E9C21A;&h00000000674A0FFF;false +Class=AVCaptureDevice;Modules/AVFoundation/AVCaptureDevice.xojo_code;&h0000000044C707FF;&h00000000674A0FFF;false +Class=AVCaptureOutput;Modules/AVFoundation/AVCaptureOutput.xojo_code;&h00000000277607FF;&h00000000674A0FFF;false +Class=AVCaptureMetadataOutput;Modules/AVFoundation/AVCaptureMetadataOutput.xojo_code;&h0000000051D047FF;&h00000000674A0FFF;false +Class=AVCaptureSession;Modules/AVFoundation/AVCaptureSession.xojo_code;&h0000000000E9C219;&h00000000674A0FFF;false +Class=AVCaptureInput;Modules/AVFoundation/AVCaptureInput.xojo_code;&h00000000221877FF;&h00000000674A0FFF;false +Class=AVCaptureConnection;Modules/AVFoundation/AVCaptureConnection.xojo_code;&h0000000000ED9DDE;&h00000000674A0FFF;false +Class=AVCaptureDeviceFormat;Modules/AVFoundation/AVCaptureDeviceFormat.xojo_code;&h0000000000EF50D7;&h00000000674A0FFF;false +Class=AVCaptureInputPort;Modules/AVFoundation/AVCaptureInputPort.xojo_code;&h0000000000F59260;&h00000000674A0FFF;false +Class=AVAudioRecorder;Modules/AVFoundation/AVAudioRecorder.xojo_code;&h0000000000E7033F;&h00000000674A0FFF;false +Class=AVAudioSession;Modules/AVFoundation/AVAudioSession.xojo_code;&h0000000000E70343;&h00000000674A0FFF;false +Class=AVCaptureAudioDataOutput;Modules/AVFoundation/AVCaptureAudioDataOutput.xojo_code;&h000000004FC03FFF;&h00000000674A0FFF;false +Class=AVCaptureFileOutput;Modules/AVFoundation/AVCaptureFileOutput.xojo_code;&h0000000000E70344;&h00000000674A0FFF;false +Class=AVCaptureMovieFileOutput;Modules/AVFoundation/AVCaptureMovieFileOutput.xojo_code;&h000000007E06E7FF;&h00000000674A0FFF;false +Class=AVSpeechSynthesisVoice;Modules/AVFoundation/AVSpeechSynthesisVoice.xojo_code;&h00000000016C653B;&h00000000674A0FFF;false +Class=AVSpeechUtterance;Modules/AVFoundation/AVSpeechUtterance.xojo_code;&h00000000016C6544;&h00000000674A0FFF;false +Class=AVSpeechSynthesizer;Modules/AVFoundation/AVSpeechSynthesizer.xojo_code;&h000000006ADABFFF;&h00000000674A0FFF;false +Class=AVAudioSessionDataSourceDescription;Modules/AVFoundation/AVAudioSessionDataSourceDescription.xojo_code;&h00000000025D72DF;&h00000000674A0FFF;false +Class=AVAudioSessionPortDescription;Modules/AVFoundation/AVAudioSessionPortDescription.xojo_code;&h00000000025D72E1;&h00000000674A0FFF;false +Class=AVAudioSessionRouteDescription;Modules/AVFoundation/AVAudioSessionRouteDescription.xojo_code;&h00000000673B57FF;&h00000000674A0FFF;false +Class=AVCaptureStillImageOutput;Modules/AVFoundation/AVCaptureStillImageOutput.xojo_code;&h00000000035027FF;&h00000000674A0FFF;false +Module=QuartzCore;Modules/QuartzCore.xojo_code;&h000000002630BFFF;&h000000000E7A9798;false +Class=CALayer;Modules/QuartzCore/CALayer.xojo_code;&h0000000041009FFF;&h000000002630BFFF;false +Module=StoreKit;Modules/StoreKit.xojo_code;&h000000000E69D7B4;&h000000000E7A9798;false +Class=SKReceiptRefreshRequest;Modules/StoreKit/SKReceiptRefreshRequest.xojo_code;&h000000001E8205DA;&h000000000E69D7B4;false +Class=SKProductsRequest;Modules/StoreKit/SKProductsRequest.xojo_code;&h000000001B4F4A45;&h000000000E69D7B4;false +Class=SKRequest;Modules/StoreKit/SKRequest.xojo_code;&h0000000071E5FD5D;&h000000000E69D7B4;false +Class=SKProductsResponse;Modules/StoreKit/SKProductsResponse.xojo_code;&h00000000018E2ED7;&h000000000E69D7B4;false +Class=SKProduct;Modules/StoreKit/SKProduct.xojo_code;&h000000002AC324F6;&h000000000E69D7B4;false +Class=SKPaymentTransaction;Modules/StoreKit/SKPaymentTransaction.xojo_code;&h000000004B4496E2;&h000000000E69D7B4;false +Class=SKPaymentQueue;Modules/StoreKit/SKPaymentQueue.xojo_code;&h0000000048B9F0B0;&h000000000E69D7B4;false +Class=SKMutablePayment;Modules/StoreKit/SKMutablePayment.xojo_code;&h00000000350CE1F4;&h000000000E69D7B4;false +Class=SKPayment;Modules/StoreKit/SKPayment.xojo_code;&h0000000078035E43;&h000000000E69D7B4;false +Class=SKDownload;Modules/StoreKit/SKDownload.xojo_code;&h00000000018E2ED6;&h000000000E69D7B4;false +Class=PaymentTransactionObserver;Modules/StoreKit/PaymentTransactionObserver.xojo_code;&h00000000165D47FF;&h000000000E69D7B4;false +Class=SKStoreProductViewController;Modules/StoreKit/SKStoreProductViewController.xojo_code;&h000000000C7A77FF;&h000000000E69D7B4;false +Class=InAppPurchaseHelper;Modules/StoreKit/InAppPurchaseHelper.xojo_code;&h000000000FD197FF;&h000000000E69D7B4;false +Module=Notification_Center;Modules/Notification_Center.xojo_code;&h00000000665DC900;&h000000000E7A9798;false +Class=NotificationRelation;Modules/Notification_Center/NotificationRelation.xojo_code;&h0000000003E3E344;&h00000000665DC900;false +Class=Notification;Modules/Notification_Center/Notification.xojo_code;&h0000000067CF0426;&h00000000665DC900;false +Class=NotificationCenter;Modules/Notification_Center/NotificationCenter.xojo_code;&h0000000078A56CCB;&h00000000665DC900;false +Class=LoadProductsCompletionHandlerWrapper;Modules/StoreKit/LoadProductsCompletionHandlerWrapper.xojo_code;&h00000000477EDFFF;&h000000000E69D7B4;false +Interface=SKStoreProductViewControllerObserver;Modules/StoreKit/SKStoreProductViewControllerObserver.xojo_code;&h000000003AC6DFFF;&h000000000E69D7B4;false +Class=UIAlertAction;Modules/UIKit/UIAlertAction.xojo_code;&h00000000247E17FF;&h0000000005DD9374;false +Class=UIAlertActionCompletionHandlerWrapper;Modules/UIKit/UIAlertActionCompletionHandlerWrapper.xojo_code;&h000000006760AFFF;&h0000000005DD9374;false +Class=UIAlertController;Modules/UIKit/UIAlertController.xojo_code;&h0000000000BF14A3;&h0000000005DD9374;false +iOSView=UIAlertView;ExampleViews/UIAlertView.xojo_code;&h00000000539417FF;&h000000001989717F;false +Module=JKRegEx;Modules/JKRegEx.xojo_code;&h0000000023DFB7FF;&h000000000E7A9798;false +Class=NSRegularExpression;Modules/JKRegEx/NSRegularExpression.xojo_code;&h00000000006E4BAC;&h0000000023DFB7FF;false +Class=RegExOptions;Modules/JKRegEx/RegExOptions.xojo_code;&h0000000029B037FF;&h0000000023DFB7FF;false +Class=RegExMatch;Modules/JKRegEx/RegExMatch.xojo_code;&h000000007A66E7FF;&h0000000023DFB7FF;false +Class=RegEx;Modules/JKRegEx/RegEx.xojo_code;&h0000000058D38FFF;&h0000000023DFB7FF;false +Class=NSTextCheckingResult;Modules/JKRegEx/NSTextCheckingResult.xojo_code;&h00000000006FE8F4;&h0000000023DFB7FF;false +Class=RegExTests;Unit Tests/RegExTests.xojo_code;&h000000000A0F27FF;&h0000000079CC2FFF;false +iOSView=ShakingView;ExampleViews/ShakingView.xojo_code;&h000000004EC86FFF;&h000000001989717F;false +Folder=GameKitFolder;Modules/GameKitFolder;&h0000000003F0BFFF;&h000000000E7A9798;false +Class=AchievementAndScoreHelper;Modules/GameKitFolder/AchievementAndScoreHelper.xojo_code;&h00000000028C47FF;&h0000000003F0BFFF;false +Interface=TurnBasedMatchHelperObserver;Modules/GameKitFolder/TurnBasedMatchHelperObserver.xojo_code;&h000000005906AFFF;&h0000000003F0BFFF;false +Class=TurnBasedMatchHelper;Modules/GameKitFolder/TurnBasedMatchHelper.xojo_code;&h00000000006125BE;&h0000000003F0BFFF;false +Class=AuthenticationHelper;Modules/GameKitFolder/AuthenticationHelper.xojo_code;&h00000000184D2FFF;&h0000000003F0BFFF;false +Interface=StandardMatchHelperObserver;Modules/GameKitFolder/StandardMatchHelperObserver.xojo_code;&h000000005BFB6FFF;&h0000000003F0BFFF;false +Class=StandardMatchHelper;Modules/GameKitFolder/StandardMatchHelper.xojo_code;&h000000000035F32F;&h0000000003F0BFFF;false +Module=GameKit;Modules/GameKitFolder/GameKit.xojo_code;&h000000006F5AA7FF;&h0000000003F0BFFF;false +Class=GKChallenge;Modules/GameKitFolder/GameKit/GKChallenge.xojo_code;&h000000005CD9C562;&h000000006F5AA7FF;false +Class=GKVoiceChat;Modules/GameKitFolder/GameKit/GKVoiceChat.xojo_code;&h00000000640A446C;&h000000006F5AA7FF;false +Class=GKTurnBasedParticipant;Modules/GameKitFolder/GameKit/GKTurnBasedParticipant.xojo_code;&h0000000044B370A5;&h000000006F5AA7FF;false +Class=GKTurnBasedMatch;Modules/GameKitFolder/GameKit/GKTurnBasedMatch.xojo_code;&h00000000158FF53C;&h000000006F5AA7FF;false +Class=GKTurnBasedExchangeReply;Modules/GameKitFolder/GameKit/GKTurnBasedExchangeReply.xojo_code;&h000000005F4B9505;&h000000006F5AA7FF;false +Class=GKTurnBasedExchange;Modules/GameKitFolder/GameKit/GKTurnBasedExchange.xojo_code;&h0000000039CB8558;&h000000006F5AA7FF;false +Class=GKScore;Modules/GameKitFolder/GameKit/GKScore.xojo_code;&h000000007ED4EBFB;&h000000006F5AA7FF;false +Class=GKSavedGame;Modules/GameKitFolder/GameKit/GKSavedGame.xojo_code;&h000000004CEC7654;&h000000006F5AA7FF;false +Class=GKLocalPlayer;Modules/GameKitFolder/GameKit/GKLocalPlayer.xojo_code;&h000000005039AE99;&h000000006F5AA7FF;false +Class=GKPlayer;Modules/GameKitFolder/GameKit/GKPlayer.xojo_code;&h000000002BB5618B;&h000000006F5AA7FF;false +Class=GKNotificationBanner;Modules/GameKitFolder/GameKit/GKNotificationBanner.xojo_code;&h000000001929895D;&h000000006F5AA7FF;false +Class=GKMatchRequest;Modules/GameKitFolder/GameKit/GKMatchRequest.xojo_code;&h00000000730F64B0;&h000000006F5AA7FF;false +Class=GKMatchmaker;Modules/GameKitFolder/GameKit/GKMatchmaker.xojo_code;&h0000000076188238;&h000000006F5AA7FF;false +Class=GKMatch;Modules/GameKitFolder/GameKit/GKMatch.xojo_code;&h0000000059E84BF3;&h000000006F5AA7FF;false +Class=GKLeaderboardSet;Modules/GameKitFolder/GameKit/GKLeaderboardSet.xojo_code;&h000000007517990C;&h000000006F5AA7FF;false +Class=GKLeaderboard;Modules/GameKitFolder/GameKit/GKLeaderboard.xojo_code;&h000000003D6388E4;&h000000006F5AA7FF;false +Class=GKInvite;Modules/GameKitFolder/GameKit/GKInvite.xojo_code;&h000000007C4D1CEE;&h000000006F5AA7FF;false +Class=GKScoreChallenge;Modules/GameKitFolder/GameKit/GKScoreChallenge.xojo_code;&h000000001B7FE992;&h000000006F5AA7FF;false +Class=GKAchievementChallenge;Modules/GameKitFolder/GameKit/GKAchievementChallenge.xojo_code;&h00000000065B73F0;&h000000006F5AA7FF;false +Class=GKAchievement;Modules/GameKitFolder/GameKit/GKAchievement.xojo_code;&h0000000001445B6A;&h000000006F5AA7FF;false +Class=GKAchievementDescription;Modules/GameKitFolder/GameKit/GKAchievementDescription.xojo_code;&h0000000001445B69;&h000000006F5AA7FF;false +Class=NSErrorCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/NSErrorCompletionHandlerWrapper.xojo_code;&h0000000051B3FFFF;&h000000006F5AA7FF;false +Class=GKLocalPlayerListener;Modules/GameKitFolder/GameKit/GKLocalPlayerListener.xojo_code;&h00000000001D4204;&h000000006F5AA7FF;false +Class=NSArrayCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/NSArrayCompletionHandlerWrapper.xojo_code;&h0000000066D1DFFF;&h000000006F5AA7FF;false +Class=UIImageCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/UIImageCompletionHandlerWrapper.xojo_code;&h000000003B76F7FF;&h000000006F5AA7FF;false +Class=NSDataCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/NSDataCompletionHandlerWrapper.xojo_code;&h00000000063EE7FF;&h000000006F5AA7FF;false +Class=GKMatchmakerViewController;Modules/GameKitFolder/GameKit/GKMatchmakerViewController.xojo_code;&h00000000003723CE;&h000000006F5AA7FF;false +Interface=GKFriendRequestComposeViewControllerObserver;Modules/GameKitFolder/GameKit/GKFriendRequestComposeViewControllerObserver.xojo_code;&h000000002307D7FF;&h000000006F5AA7FF;false +Class=GKGameCenterViewController;Modules/GameKitFolder/GameKit/GKGameCenterViewController.xojo_code;&h0000000000601154;&h000000006F5AA7FF;false +Interface=GKGameCenterViewControllerObserver;Modules/GameKitFolder/GameKit/GKGameCenterViewControllerObserver.xojo_code;&h000000006D0F4FFF;&h000000006F5AA7FF;false +Class=GKTurnBasedMatchmakerViewController;Modules/GameKitFolder/GameKit/GKTurnBasedMatchmakerViewController.xojo_code;&h00000000005EC55D;&h000000006F5AA7FF;false +Class=GKFriendRequestComposeViewController;Modules/GameKitFolder/GameKit/GKFriendRequestComposeViewController.xojo_code;&h0000000033418FFF;&h000000006F5AA7FF;false +Class=GKMatchCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKMatchCompletionHandlerWrapper.xojo_code;&h0000000053B6C7FF;&h000000006F5AA7FF;false +Class=GKPlayerCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKPlayerCompletionHandlerWrapper.xojo_code;&h0000000020AA7FFF;&h000000006F5AA7FF;false +Class=GKTurnbasedMatchCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKTurnbasedMatchCompletionHandlerWrapper.xojo_code;&h000000004E134FFF;&h000000006F5AA7FF;false +Class=IntegerCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/IntegerCompletionHandlerWrapper.xojo_code;&h0000000061E777FF;&h000000006F5AA7FF;false +Class=TextCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/TextCompletionHandlerWrapper.xojo_code;&h000000001C9127FF;&h000000006F5AA7FF;false +Class=GKTurnbasedExchangeCompletionHandlerWrapper;Modules/GameKitFolder/GameKit/GKTurnbasedExchangeCompletionHandlerWrapper.xojo_code;&h000000001A26A7FF;&h000000006F5AA7FF;false +iOSView=StandardGame;ExampleViews/GameKitViews/StandardGame.xojo_code;&h000000000ECF3FFF;&h0000000043718FFF;false +iOSView=GameKitDemoView;ExampleViews/GameKitViews/GameKitDemoView.xojo_code;&h00000000340FA7FF;&h0000000043718FFF;false +Module=iCloudStuff;Modules/iCloudStuff.xojo_code;&h000000007D6F17FF;&h000000000E7A9798;false +Class=UIDocumentPickerViewController;Modules/iCloudStuff/UIDocumentPickerViewController.xojo_code;&h0000000000D703BA;&h000000007D6F17FF;false +LaunchImages=iOSLaunchImages;iOSLaunchImages.xojo_image;&h000000004CC3CFFF;&h0000000000000000;false +AppIcons=AppIcon;AppIcon.xojo_image;&h000000003BAA6FFF;&h0000000000000000;false +Folder=XojoUnit;XojoUnit;&h000000002516B04D;&h0000000000000000;false +Folder=Tests;XojoUnit/Tests;&h0000000044C729E7;&h000000002516B04D;false +Class=XojoUnitTests;XojoUnit/Tests/XojoUnitTests.xojo_code;&h0000000045CA76B3;&h0000000044C729E7;false +Class=XojoUnitFailTests;XojoUnit/Tests/XojoUnitFailTests.xojo_code;&h000000002FC99FFF;&h0000000044C729E7;false +Folder=TestFramework;XojoUnit/TestFramework;&h000000003E1A9B41;&h000000002516B04D;false +Class=TestGroup;XojoUnit/TestFramework/TestGroup.xojo_code;&h000000006F90619D;&h000000003E1A9B41;false +Class=TestController;XojoUnit/TestFramework/TestController.xojo_code;&h000000006FF90549;&h000000003E1A9B41;false +Class=Assert;XojoUnit/TestFramework/Assert.xojo_code;&h000000006F374736;&h000000003E1A9B41;false +Class=TestResult;XojoUnit/TestFramework/TestResult.xojo_code;&h000000001624A4EB;&h000000003E1A9B41;false +iOSView=XojoUnitTestGroupView;XojoUnit/XojoUnitTestGroupView.xojo_code;&h000000001A070FFF;&h000000002516B04D;false +iOSView=XojoUnitTestMethodView;XojoUnit/XojoUnitTestMethodView.xojo_code;&h0000000038986FFF;&h000000002516B04D;false +iOSView=XojoUnitTestDetailsView;XojoUnit/XojoUnitTestDetailsView.xojo_code;&h00000000215E17FF;&h000000002516B04D;false +Class=UIFeedbackGenerator;Modules/UIKit/UIFeedbackGenerator.xojo_code;&h0000000009EE4FFF;&h0000000005DD9374;false +Class=UIImpactFeedbackGenerator;Modules/UIKit/UIImpactFeedbackGenerator.xojo_code;&h000000004A5587FF;&h0000000005DD9374;false +Class=UINotificationFeedbackGenerator;Modules/UIKit/UINotificationFeedbackGenerator.xojo_code;&h000000000BDBBFFF;&h0000000005DD9374;false +Class=UISelectionFeedbackGenerator;Modules/UIKit/UISelectionFeedbackGenerator.xojo_code;&h000000001CC31FFF;&h0000000005DD9374;false +iOSView=HapticFeedbackView;ExampleViews/HapticFeedbackView.xojo_code;&h0000000006596FFF;&h000000001989717F;false DefaultScreen=iPhoneScreen DefaultTabletScreen=iPadScreen MajorVersion=1 @@ -265,3 +270,5 @@ EnvironmentVariables= Capabilities={"AppGroups":{"Enabled":false,"Groups":{}},"ApplePay":{"Enabled":false,"Merchants":{}},"AssociatedDomains":{"Enabled":false,"Domains":{}},"BackgroundModes":{"Enabled":false,"Modes":{}},"iCloud":{"Enabled":false,"Containers":{"KeyValueStorage":false,"iCloudDocuments":true,"CloudKit":false,"UseDefaultContainer":true,"UseCustom":false}},"KeyChainSharing":{"Enabled":false,"Groups":{}},"Maps":{"Enabled":false,"MapDirections":{}},"Passbook":{"Enabled":false,"Passes":{}}} BuildForAppStore=False OptimizationLevel=0 +WindowsVersions={35138b9a-5d96-4fbd-8e2d-a2440225f93a}|{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}|{1f676c76-80e1-4239-95bb-83d0f6d0da78}|{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} +WindowsRunAs=0