У меня есть textView в моей ячейке, и иногда во время прокрутки tableView происходят странные вызовы. Система делает мой textView первым ответчиком. Я обнаружил, что эти вызовы ведут себя нежелательно:
#0 -[UITextView canBecomeFirstResponder] ()
#1 -[UIView(Hierarchy) deferredBecomeFirstResponder] ()
#2 -[UIView(Hierarchy) _promoteDescendantToFirstResponderIfNecessary] ()
Я не могу понять, почему они вызываются, поэтому я попытался справиться с этим, расширив UITextView
и переопределив - canBecomeFirstResponder
.
Вот мой .h:
#import <UIKit/UIKit.h>
@protocol TextViewDelegate;
@interface TextView : UITextView
@property (nonatomic, assign) id<TextViewDelegate> delegate;
@end
@protocol TextViewDelegate <UITextViewDelegate>
- (BOOL)canBecomeFirstResponder:(TextView *)textView;
@end
И .m:
#import "TextView.h"
@implementation TextView
@synthesize delegate;
- (BOOL)canBecomeFirstResponder
{
return [self.delegate respondsToSelector:@selector(canBecomeFirstResponder:)] ? [self.delegate canBecomeFirstResponder:self] : NO;
}
@end
Это решение работает, но в строке @property (nonatomic, assign) id
У меня есть предупреждение, и я не знаю, почему. В нем говорится Тип свойства 'id
.
Так почему же система хочет, чтобы textView отвечал первым, если я этого не делаю? Почему я получаю это предупреждение? Есть ли лучшее решение, чем мое?