Как сказал Джон Феминелла, большую часть времени вы будете использовать == и! =, Потому что ваша цель - сравнить значения. Я просто хотел бы классифицировать то, что вы будете делать в остальное время:
Существует один и только один экземпляр NoneType, т.е. ни один не является синглтоном. Следовательно, foo == None
и foo is None
означают одно и то же. Тем не менее, тест is
быстрее, и Pythonic соглашается использовать foo is None
.
Если вы проводите некоторый самоанализ или разбираетесь со сборкой мусора или проверяете, работает ли ваш пользовательский встроенный гаджет для интернирования строк или тому подобное, то у вас, вероятно, есть вариант использования для foo
: bar
.
True и False также (в настоящее время) синглтоны, но для foo == True
нет сценария использования и для foo is True
.
Мне удалось ограничить ввод и вставку текста, следуя методу textViewDidChange: в протоколе UITextViewDelegate.
- (void)textViewDidChange:(UITextView *)textView
{
if (textView.text.length >= 10)
{
textView.text = [textView.text substringToIndex:10];
}
}
Но я все еще считаю этот вид уродливого взлома, и, похоже, Apple следует предоставили какое-то свойство "maxLength" для UITextFields и UITextViews.
Если кому-то известно о лучшем решении, сообщите об этом.
Один из ответов на первый вопрос, на который вы указали ссылку выше, должен сработать, а именно использовать что-то вроде
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(limitTextField:) name:@"UITextFieldTextDidChangeNotification" object:myTextField];
, чтобы отслеживать изменения текста в UITextField и при необходимости сокращать его.
По моему опыту, просто реализация метода делегирования:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
работает с вставкой. Вся вставленная строка встречается в аргументе replaceString :. Просто проверьте его длину, и если она больше вашей максимальной длины, просто верните NO из этого метода делегата. При этом ничего не будет вставлено. В качестве альтернативы вы можете подставить его, как предлагалось ранее, но это работает, чтобы предотвратить вставку вообще, если она слишком длинная, если вы этого хотите.
При этом ничего не будет вставлено. В качестве альтернативы вы можете подставить его, как предлагалось ранее, но это работает, чтобы предотвратить вставку вообще, если она слишком длинная, если вы этого хотите. При этом ничего не будет вставлено. В качестве альтернативы вы можете подставить его, как предлагалось ранее, но это работает, чтобы предотвратить вставку вообще, если она слишком длинная, если вы этого хотите.