<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic autoPanModeChangedHandler in 100.3 in ArcGIS Runtime SDK for iOS Questions</title>
    <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/autopanmodechangedhandler-in-100-3/m-p/178282#M1653</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After updating my project with 100.3, my&amp;nbsp;autoPanModeChangedHandler is no longer called. I made a test app with basically the same swift code from the [ArcGIS Runtime SDK Samples]-&amp;gt;[Display device location] and it doesn't fire there either. Does anyone know if the way we should use&amp;nbsp;autoPanModeChangedHandler has changed?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 13 Jul 2018 15:18:58 GMT</pubDate>
    <dc:creator>WorthSparks</dc:creator>
    <dc:date>2018-07-13T15:18:58Z</dc:date>
    <item>
      <title>autoPanModeChangedHandler in 100.3</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/autopanmodechangedhandler-in-100-3/m-p/178282#M1653</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After updating my project with 100.3, my&amp;nbsp;autoPanModeChangedHandler is no longer called. I made a test app with basically the same swift code from the [ArcGIS Runtime SDK Samples]-&amp;gt;[Display device location] and it doesn't fire there either. Does anyone know if the way we should use&amp;nbsp;autoPanModeChangedHandler has changed?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jul 2018 15:18:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/autopanmodechangedhandler-in-100-3/m-p/178282#M1653</guid>
      <dc:creator>WorthSparks</dc:creator>
      <dc:date>2018-07-13T15:18:58Z</dc:date>
    </item>
    <item>
      <title>Re: autoPanModeChangedHandler in 100.3</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/autopanmodechangedhandler-in-100-3/m-p/178283#M1654</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Worth Sparks,&lt;/P&gt;&lt;P&gt;I can reproduce this.&amp;nbsp; I've put an issue in and we'll get it fixed in the next release.&amp;nbsp; In the mean time, would you be able to use KVO in place of the autoPanModeChangedHandler?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can add an observer:&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;mapView&lt;/SPAN&gt;.&lt;SPAN class=""&gt;locationDisplay&lt;/SPAN&gt;.&lt;SPAN class=""&gt;addObserver&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;, forKeyPath: &lt;SPAN class=""&gt;"autoPanMode"&lt;/SPAN&gt;, options: [.&lt;SPAN class=""&gt;new&lt;/SPAN&gt;, .&lt;SPAN class=""&gt;old&lt;/SPAN&gt;], context: &amp;amp;&lt;SPAN class=""&gt;myContext&lt;/SPAN&gt;)&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;And then write the function that gets called when a change happens:&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;override&lt;/SPAN&gt; &lt;SPAN class=""&gt;func&lt;/SPAN&gt; observeValue(forKeyPath keyPath: &lt;SPAN class=""&gt;String&lt;/SPAN&gt;?, of object: &lt;SPAN class=""&gt;Any&lt;/SPAN&gt;?, change: [&lt;SPAN class=""&gt;NSKeyValueChangeKey&lt;/SPAN&gt; : &lt;SPAN class=""&gt;Any&lt;/SPAN&gt;]?, context: &lt;SPAN class=""&gt;UnsafeMutableRawPointer&lt;/SPAN&gt;?) {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;if&lt;/SPAN&gt; context == &amp;amp;&lt;SPAN class=""&gt;myContext&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;let&lt;/SPAN&gt; newValue = change?[&lt;SPAN class=""&gt;NSKeyValueChangeKey&lt;/SPAN&gt;.&lt;SPAN class=""&gt;newKey&lt;/SPAN&gt;], &lt;SPAN class=""&gt;let&lt;/SPAN&gt; oldValue = change?[&lt;SPAN class=""&gt;NSKeyValueChangeKey&lt;/SPAN&gt;.&lt;SPAN class=""&gt;oldKey&lt;/SPAN&gt;], &lt;SPAN class=""&gt;let&lt;/SPAN&gt; prop = keyPath, &lt;SPAN class=""&gt;let&lt;/SPAN&gt; sender = object {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;(&lt;SPAN class=""&gt;"&lt;/SPAN&gt;\&lt;SPAN class=""&gt;(&lt;/SPAN&gt;type(of: (sender) &lt;SPAN class=""&gt;as&lt;/SPAN&gt; &lt;SPAN class=""&gt;AnyObject&lt;/SPAN&gt;)&lt;SPAN class=""&gt;) - &lt;/SPAN&gt;\&lt;SPAN class=""&gt;(&lt;/SPAN&gt;prop&lt;SPAN class=""&gt;) changed: &lt;/SPAN&gt;\&lt;SPAN class=""&gt;(&lt;/SPAN&gt;newValue&lt;SPAN class=""&gt;) old value: &lt;/SPAN&gt;\&lt;SPAN class=""&gt;(&lt;/SPAN&gt;oldValue&lt;SPAN class=""&gt;)"&lt;/SPAN&gt;)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;DispatchQueue&lt;/SPAN&gt;.&lt;SPAN class=""&gt;main&lt;/SPAN&gt;.&lt;SPAN class=""&gt;async&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;// Do any UI work on the main thread.&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;else&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;print&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;"context matched but some value was null"&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;} &lt;SPAN class=""&gt;else&lt;/SPAN&gt; {&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;super&lt;/SPAN&gt;.&lt;SPAN class=""&gt;observeValue&lt;/SPAN&gt;(forKeyPath: keyPath, of: object, change: change, context: context)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;You'll need to remove the observer:&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;deinit&lt;SPAN class=""&gt; {&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=""&gt;mapView&lt;/SPAN&gt;.&lt;SPAN class=""&gt;locationDisplay&lt;/SPAN&gt;.&lt;SPAN class=""&gt;removeObserver&lt;/SPAN&gt;(&lt;SPAN class=""&gt;self&lt;/SPAN&gt;, forKeyPath: &lt;SPAN class=""&gt;"autoPanMode"&lt;/SPAN&gt;)&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P class=""&gt;&lt;/P&gt;&lt;P class=""&gt;One way to create a variable for the context is:&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;private&lt;/SPAN&gt; &lt;SPAN class=""&gt;var&lt;/SPAN&gt; myContext = &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;I didn't use the new Swift&amp;nbsp;&lt;/SPAN&gt;mapView&lt;SPAN class=""&gt;.&lt;/SPAN&gt;locationDisplay&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;observe syntax because of this Swift bug&amp;nbsp;&lt;A class="link-titled" href="https://bugs.swift.org/browse/SR-5872" title="https://bugs.swift.org/browse/SR-5872"&gt;[SR-5872] newValue and oldValue always nil when observing AVPlayerItem.status - Swift&lt;/A&gt;&amp;nbsp; As far as I can tell it is still a bug but might be worth a try with the latest version.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;Phil&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jul 2018 17:59:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/autopanmodechangedhandler-in-100-3/m-p/178283#M1654</guid>
      <dc:creator>PhilipGruenler</dc:creator>
      <dc:date>2018-07-13T17:59:40Z</dc:date>
    </item>
    <item>
      <title>Re: autoPanModeChangedHandler in 100.3</title>
      <link>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/autopanmodechangedhandler-in-100-3/m-p/178284#M1655</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I just transitioned my code to KVO on autoPanMode and it works great. It isn't as elegant as autoPanModeChangedHandler but it makes an awesome workaround for until the fix comes.&lt;/P&gt;&lt;P&gt;Thanks Phil.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Worth&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Jul 2018 19:06:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-runtime-sdk-for-ios-questions/autopanmodechangedhandler-in-100-3/m-p/178284#M1655</guid>
      <dc:creator>WorthSparks</dc:creator>
      <dc:date>2018-07-17T19:06:04Z</dc:date>
    </item>
  </channel>
</rss>

