2014-12-03 4 views
0

Я пытаюсь реализовать метод перемещения прокрутки, чтобы текст не блокировался клавиатурой. В качестве стандартного кода UITextView необходимо установить в ноль, но он не работает.UITextView() не может быть определен как нуль?

я первый заявил

var activeTextView = UITextView() 

затем

func textFieldDidEndEditing(textView: UITextView) { 
    self.activeTextView = nil 
    scrollView.scrollEnabled = false 
} 

Xcode показывает ошибку говоря, UITextView не соответствует NilLiteralConvertible. Почему?

+0

Вам не нужно объявлять свое текстовое представление как 'activeTextView? ', Чтобы оно было нулевым? – thegrinner

+0

Вам нужно, чтобы activeTextView был необязательным, чтобы принимать значения nil: 'var activeTextView: UITextView? = UITextView() ' –

+0

Как мне активироватьTextView.frame после установки его в« UITextView? »? ? Если я принудительно разворачиваю приложение приводит к сбою – user3483697

ответ

1

Неверный ответ! Это не потому, что это должно быть UIView. Оба UITextView и UITextField являются подклассами UIView, и вы используете неправильный.

Вы хотите либо это из textFieldDelegate:

func textFieldDidEndEditing(textField: UITextField) 

https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/index.html

или это из textViewDelegate

func textViewDidEndEditing(textView: UITextView) 

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextViewDelegate_Protocol/index.html

Причина ваша работала с UIView, потому что как подкласс это, но это не делает его правильным!

+0

, как я могу активироватьTextView.frame после установки его на «UITextView?» ? Если я принудительно разворачиваю приложение сбой – user3483697

+0

Имейте это как необязательный :) Вы понимаете, как это сделать? –

+0

, так что я попробовал self.activeTextView! .frame, который работает, но потом сработает. Также попытался self.activeText? .frame, который просто сработает сразу :(возможно, придется опубликовать отдельный вопрос с полным кодом – user3483697

0

Если я понимаю ваш вопрос правильно, вам просто нужно убрать TextView как необязательный, потому что в Swift вы не можете установить необязательный объект в ноль.

var activeTextView: UITextView? 

Необходимо решить вашу проблему.

Questionmark будет оспаривать его как необязательный, и только необязательный может быть nil.

Смежные вопросы