Tengo textView en mi celda y algunas veces durante el desplazamiento de TableView ocurren algunas llamadas extrañas. El sistema hace que mi primera respuesta textView. He encontrado estas llamadas hacen un comportamiento no deseado:Delegado de anulación de Objective-c con su descendiente tipo
#0 -[UITextView canBecomeFirstResponder]()
#1 -[UIView(Hierarchy) deferredBecomeFirstResponder]()
#2 -[UIView(Hierarchy) _promoteDescendantToFirstResponderIfNecessary]()
no puedo averiguar por qué son estos, llamada, por lo que he tratado de hacer frente a esta extendiendo y UITextView
primordial - canBecomeFirstResponder
.
Aquí es mi .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
Y .m:
#import "TextView.h"
@implementation TextView
@synthesize delegate;
- (BOOL)canBecomeFirstResponder
{
return [self.delegate respondsToSelector:@selector(canBecomeFirstResponder:)] ? [self.delegate canBecomeFirstResponder:self] : NO;
}
@end
Esta solución funciona, pero en la línea @property (nonatomic, assign) id<TextViewDelegate> delegate;
Tengo advertencia y no sé qué. Dice Property type 'id<TextViewDelegate>' is incompatible with type 'id<UITextViewDelegate>' inherited from 'UITextView'
.
Entonces, ¿por qué el sistema quiere hacer que el equipo de primera respuesta de TextView no lo haga? ¿Por qué recibo esta advertencia? ¿Hay una solución mejor que la mía?
que habían tratado de establecer esta propiedad editable pero también tiene 'inputAccessoryView' por lo que cuando se convierte primero en responder esta' inputAccessoryView' muestra. Solo quiero tomar el control de ser el primer respondedor en este objeto. De todos modos, estás en lo correcto con tu respuesta. Esa cosa con precompilador desinformado es vergüenza ... – user500