2015-03-24 5 views
-3

Я работаю над приложением iOS, но по какой-то причине моя страница входа в систему больше не работает. Все UIElements, похоже, работают нормально, за исключением UITextField, который я использую для имени пользователя (Password TextField работает нормально).Crash on focus UITextField

Экран входа в систему очень прост, он имеет один элемент управления представлением, а текстовое поле имени пользователя имеет одну точку доступа в этом диспетчере просмотра.

Я ничего не делаю с текстовым полем, когда он фокусируется. Это происходит на iOS8 на физическом iPad 2 и на эмуляторе iPhone 4s.

То, что я пытался сделать:

  • Заново установить приложение
  • Повторное объявление о TextField
  • Заново подключить Outlet
  • Откат мой раскадровки к рабочей версии

Я нашел несколько других ответов, но ни один из них, похоже, не имеет окончательного ответа.

Исключение:

2015-03-24 11:13:53.695 App[43084:866627] -[__NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x7ae5f920 
2015-03-24 11:13:53.726 App[43084:866627] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x7ae5f920' 
*** First throw call stack: 
(
    0 CoreFoundation      0x00def466 __exceptionPreprocess + 182 
    1 libobjc.A.dylib      0x006d7a97 objc_exception_throw + 44 
    2 CoreFoundation      0x00df72c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277 
    3 CoreFoundation      0x00d3fbc7 ___forwarding___ + 1047 
    4 CoreFoundation      0x00d3f78e _CF_forwarding_prep_0 + 14 
    5 CoreFoundation      0x00cc531c CFArrayGetValueAtIndex + 188 
    6 CoreFoundation      0x00d601ed CFStringTokenizerCreate + 749 
    7 UIKit        0x01c377ce __91-[_UITextInputControllerTokenizer _getClosestTokenRangeForPosition:granularity:downstream:]_block_invoke44 + 264 
    8 UIFoundation      0x0439e9d3 -[NSTextStorage coordinateReading:] + 51 
    9 UIKit        0x01c37459 -[_UITextInputControllerTokenizer _getClosestTokenRangeForPosition:granularity:downstream:] + 276 
    10 UIKit        0x018ba567 -[UITextInputStringTokenizer positionFromPosition:toBoundary:inDirection:] + 93 
    11 UIKit        0x018bad9d -[TIDocumentState(UITextInputAdditions) _contextBeforePosition:inDocument:] + 81 
    12 UIKit        0x018baef3 -[TIDocumentState(UITextInputAdditions) initWithDocument:] + 125 
    13 UIKit        0x018ba95f +[TIDocumentState(UITextInputAdditions) documentStateOfDocument:] + 63 
    14 UIKit        0x015fad7b -[UIKeyboardImpl syncDocumentStateToInputDelegateWithExecutionContext:] + 298 
    15 UIKit        0x015fb787 -[UIKeyboardImpl updateForChangedSelectionWithExecutionContext:] + 326 
    16 UIKit        0x015f57b6 __36-[UIKeyboardImpl setDelegate:force:]_block_invoke + 43 
    17 UIKit        0x01c384b2 -[UIKeyboardTaskQueue continueExecutionOnMainThread] + 404 
    18 UIKit        0x01c38b6f -[UIKeyboardTaskQueue addTask:] + 144 
    19 UIKit        0x015f5783 -[UIKeyboardImpl setDelegate:force:] + 2450 
    20 UIKit        0x015f4dec -[UIKeyboardImpl setDelegate:] + 60 
    21 UIKit        0x01928fe5 -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:] + 1096 
    22 UIKit        0x01570687 -[UIResponder(UIResponderInputViewAdditions) reloadInputViews] + 316 
    23 UIKit        0x0156f6ec -[UIResponder becomeFirstResponder] + 562 
    24 UIKit        0x01435ba0 -[UIView(Hierarchy) becomeFirstResponder] + 114 
    25 UIKit        0x01c04607 -[UITextField becomeFirstResponder] + 51 
    26 UIKit        0x018051bf -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) setFirstResponderIfNecessary] + 200 
    27 UIKit        0x018077e6 -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) oneFingerTap:] + 2762 
    28 UIKit        0x017fb057 _UIGestureRecognizerSendActions + 327 
    29 UIKit        0x017f98d4 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 561 
    30 UIKit        0x017fb91d -[UIGestureRecognizer _delayedUpdateGesture] + 60 
    31 UIKit        0x017ff29a ___UIGestureRecognizerUpdate_block_invoke661 + 57 
    32 UIKit        0x017ff15d _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 317 
    33 UIKit        0x017f3066 _UIGestureRecognizerUpdate + 3720 
    34 UIKit        0x0140ac5b -[UIWindow _sendGesturesForEvent:] + 1356 
    35 UIKit        0x0140babf -[UIWindow sendEvent:] + 769 
    36 UIKit        0x013d0bb1 -[UIApplication sendEvent:] + 242 
    37 UIKit        0x013e0bf6 _UIApplicationHandleEventFromQueueEvent + 21066 
    38 UIKit        0x013b4bc7 _UIApplicationHandleEventQueue + 2300 
    39 CoreFoundation      0x00d1298f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 
    40 CoreFoundation      0x00d0849d __CFRunLoopDoSources0 + 253 
    41 CoreFoundation      0x00d079f8 __CFRunLoopRun + 952 
    42 CoreFoundation      0x00d0737b CFRunLoopRunSpecific + 443 
    43 CoreFoundation      0x00d071ab CFRunLoopRunInMode + 123 
    44 GraphicsServices     0x04e182c1 GSEventRunModal + 192 
    45 GraphicsServices     0x04e180fe GSEventRun + 104 
    46 UIKit        0x013b89b6 UIApplicationMain + 1526 
    47 App        0x0005ffbd main + 141 
    48 libdyld.dylib      0x0296dac9 start + 1 
    49 ???         0x00000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

ViewController:

#import "LoginViewController.h" 

@implementation LoginViewController 

UserManager *usermanager; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 
- (IBAction)cancelLogin:(id)sender { 
    [self dismissViewControllerAnimated:true completion:nil]; 
} 

- (IBAction)login:(id)sender { 
    [loginIndicator startAnimating]; 
    LoginHandler *loginhandler = [[LoginHandler alloc]initWithUsername:usernameField.text 
                   password:passwordField.text 
                    beta:betaSwitch.isOn 
                    view:self]; 
    [loginhandler loginUser]; 
} 

-(void)resetFields{ 
    usernameField.text = @""; 
    passwordField.text = @""; 
    [loginIndicator stopAnimating]; 
} 

@end 

Viewcontroller.h

#import <UIKit/UIKit.h> 
#import <Foundation/Foundation.h> 
#import "LoginHandler.h" 

@interface LoginViewController : UIViewController{ 


    __weak IBOutlet UITextField *usernameField; 
    __weak IBOutlet UITextField *passwordField; 
    __weak IBOutlet UIActivityIndicatorView *loginIndicator; 
    __weak IBOutlet UISwitch *betaSwitch; 
    __weak IBOutlet UINavigationBar *navigationBar; 
} 

-(void)resetFields; 

@end 

Исключение точки останова дает следующую строку:

2015-03-24 11:43:41.338 App[323:15867] -[__NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x15653690 

Может ли кто-нибудь еще мне помочь? Thanks

+2

Сбой при отладке? Если да, вы должны увидеть сообщение об ошибке в консоли при сбое - обычно это очень полезно – Vladimir

+0

Вы правы, полностью забыл добавить его –

+0

Попробуйте найти строку. Кажется, что вы манипулируете «NSString», как будто это «NSArray». – Larme

ответ

1

Кажется, я нашел ответ, это как-то связано с моими ограничениями по какой-то причине. Я очистил ограничения и снова добавил их, и как-то он снова работает.