[TIMOB-18380] Regression: Programmatically hiding a PopOver showing a ListView with a SearchBar that has focus results in crash
| GitHub Issue | n/a | 
|---|---|
| Type | Bug | 
| Priority | Critical | 
| Status | Closed | 
| Resolution | Fixed | 
| Resolution Date | 2015-01-15T17:43:46.000+0000 | 
| Affected Version/s | Release 3.5.0 | 
| Fix Version/s | Release 3.5.1, Release 4.0.0 | 
| Components | iOS | 
| Labels | listview, popover, qe-testadded, qe-verified, searchbar | 
| Reporter | Fokke Zandbergen | 
| Assignee | Vishal Duggal | 
| Created | 2015-01-14T16:12:30.000+0000 | 
| Updated | 2015-03-06T14:58:23.000+0000 | 
Description
	This ticket is related to TIMOB-17923 and TIMOB-18260. Though TIMOB-18260 fixes the situation where the popover hides because the user taps outside the popover, this ticket is for the situation where the popover is closed programmatically via 
hide().
Steps
1. Build the code to iPad Simulator 2. Click the green button 3. Click the searchbar to focus on the field 4. Click the red button to programmatically hide the popover 5. See it crashCode
var w = Ti.UI.createWindow({
  backgroundColor: 'white'
});
var b = Ti.UI.createButton({
  title: 'Click Me',
  backgroundColor: 'green'
});
b.addEventListener('click', function() {
  var cw = Ti.UI.createWindow({
    width: 300
  });
  var lv = Ti.UI.createListView({
    searchView: Ti.UI.createSearchBar(),
  });
  var bt = Ti.UI.createButton({
    title: 'Focus search then click me',
    backgroundColor: 'red'
  });
  bt.addEventListener('click', function() {
    p.hide();
  });
  cw.add(lv);
  cw.add(bt);
  var p = Ti.UI.iPad.createPopover({
    contentView: cw
  });
  p.show({
    view: b
  });
});
w.add(b);
w.open();
Crash log
[DEBUG] 2015-01-14 14:31:55.492 Timewax[52232:3411517] -[TiUILabelProxy addSubview:]: unrecognized selector sent to instance 0x7bafc200
[ERROR] The application has crashed with an uncaught exception 'NSInvalidArgumentException'.
[ERROR] Reason:
[ERROR] -[TiUILabelProxy addSubview:]: unrecognized selector sent to instance 0x7bafc200
[ERROR] Stack trace:
[ERROR]
[ERROR] 0   CoreFoundation                      0x05abe92a __exceptionPreprocess + 154
[ERROR] 1   libobjc.A.dylib                     0x05690a97 objc_exception_throw + 44
[ERROR] 2   CoreFoundation                      0x05ac65c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
[ERROR] 3   CoreFoundation                      0x05a0f3e7 ___forwarding___ + 1047
[ERROR] 4   CoreFoundation                      0x05a0efae _CF_forwarding_prep_0 + 14
[ERROR] 5   UIKit                               0x02a49899 -[UISearchDisplayController _hoistSearchBar] + 375
[ERROR] 6   UIKit                               0x02a4a82e -[UISearchDisplayController showHideAnimationDidFinish] + 108
[ERROR] 7   UIKit                               0x02650f72 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 206
[ERROR] 8   UIKit                               0x026512e2 -[UIViewAnimationState animationDidStop:finished:] + 80
[ERROR] 9   UIKit                               0x14ffb50b -[UIViewAnimationStateAccessibility animationDidStop:finished:] + 66
[ERROR] 10  QuartzCore                          0x017eb9d9 _ZN2CA5Layer23run_animation_callbacksEPv + 307
[ERROR] 11  libdispatch.dylib                   0x0639b03f _dispatch_client_callout + 14
[ERROR] 12  libdispatch.dylib                   0x06384764 _dispatch_main_queue_callback_4CF + 470
[ERROR] 13  CoreFoundation                      0x05a1895e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
[ERROR] 14  CoreFoundation                      0x059d7760 __CFRunLoopRun + 2256
[ERROR] 15  CoreFoundation                      0x059d6bcb CFRunLoopRunSpecific + 443
[ERROR] 16  CoreFoundation                      0x059d69fb CFRunLoopRunInMode + 123
[ERROR] 17  GraphicsServices                    0x06b0324f GSEventRunModal + 192
[ERROR] 18  GraphicsServices                    0x06b0308c GSEventRun + 104
[ERROR] 19  UIKit                               0x025e98b6 UIApplicationMain + 1526
[ERROR] 20  Timewax                             0x0006b468 main + 456
[ERROR] 21  libdyld.dylib                       0x063c1ac9 start + 1
[ERROR]
[ERROR] 2015-01-14 14:31:55.505 Timewax[52232:3411517] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TiUILabelProxy addSubview:]: unrecognized selector sent to instance 0x7bafc200'
[ERROR] *** First throw call stack:
[ERROR] (
[ERROR]         0   CoreFoundation                      0x05abe946 __exceptionPreprocess + 182
[ERROR]         1   libobjc.A.dylib                     0x05690a97 objc_exception_throw + 44
[ERROR]         2   CoreFoundation                      0x05ac65c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
[ERROR]         3   CoreFoundation                      0x05a0f3e7 ___forwarding___ + 1047
[ERROR]         4   CoreFoundation                      0x05a0efae _CF_forwarding_prep_0 + 14
[ERROR]         5   UIKit                               0x02a49899 -[UISearchDisplayController _hoistSearchBar] + 375
[ERROR]         6   UIKit                               0x02a4a82e -[UISearchDisplayController showHideAnimationDidFinish] + 108
[ERROR]         7   UIKit                               0x02650f72 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 206
[ERROR]         8   UIKit                               0x026512e2 -[UIViewAnimationState animationDidStop:finished:] + 80
[ERROR]         9   UIKit                               0x14ffb50b -[UIViewAnimationStateAccessibility animationDidStop:finished:] + 66
[ERROR]         10  QuartzCore                          0x017eb9d9 _ZN2CA5Layer23run_animation_callbacksEPv + 307
[ERROR]         11  libdispatch.dylib                   0x0639b03f _dispatch_client_callout + 14
[ERROR]         12  libdispatch.dylib                   0x06384764 _dispatch_main_queue_callback_4CF + 470
[ERROR]         13  CoreFoundation                      0x05a1895e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14
[ERROR]         14  CoreFoundation                      0x059d7760 __CFRunLoopRun + 2256
[ERROR]         15  CoreFoundation                      0x059d6bcb CFRunLoopRunSpecific + 443
[ERROR]         16  CoreFoundation                      0x059d69fb CFRunLoopRunInMode + 123
[ERROR]         17  GraphicsServices                    0x06b0324f GSEventRunModal + 192
[ERROR]         18  GraphicsServices                    0x06b0308c GSEventRun + 104
[ERROR]         19  UIKit                               0x025e98b6 UIApplicationMain + 1526
[ERROR]         20  Timewax                             0x0006b468 main + 456
[ERROR]         21  libdyld.dylib                       0x063c1ac9 start + 1
[ERROR] )
[ERROR] libc++abi.dylib: terminating with uncaught exception of type NSException
Pull pending master - https://github.com/appcelerator/titanium_mobile/pull/6575
Backport to 3_5_X https://github.com/appcelerator/titanium_mobile/pull/6577
Verified fix on: Mac OSX 10.10.1 Appcelerator Studio, build: 3.4.1.201410281743 Titanium SDK build: 3.6.0.v20150116070927, 3.5.1.v20150115094121 Titanium CLI, build: 3.4.1 Alloy: 1.5.1 Xcode 6.1.1 iPad Air 2 (8.2b4), iPad Air (7.0.3) Using the attached code built to both devices, the app no longer crashes when the popover is dismissed. Closing ticket.
Verified working as expected using: Titanium SDK 3.5.1.v20150219110512 Studio 3.4.2.201502181619 CLI 3.4.2-alpha Xcode 6.2b5
There is actually still a bug on this, if you highlight the searchBar, and then click outside of the popover to close, it will crash.