내 셀에 textView가 있고 테이블 뷰 스크롤 중에 일부 이상한 호출이 발생합니다. 시스템 내 textView 첫 번째 응답자를 확인하십시오. 나는이 전화가 원치 않는 행동을 할 발견했습니다 :이라고 이유를Objective-c 하위 형식이있는 대리자를 재정의합니다.
#0 -[UITextView canBecomeFirstResponder]()
#1 -[UIView(Hierarchy) deferredBecomeFirstResponder]()
#2 -[UIView(Hierarchy) _promoteDescendantToFirstResponderIfNecessary]()
내가 찾을 수 없습니다를, 그래서 나는 UITextView
및 - canBecomeFirstResponder
최우선을 확장하여 처리하려고했습니다.
#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<TextViewDelegate> delegate;
에 있지만 작동
여기 내 .H입니다. 그것은 Property type 'id<TextViewDelegate>' is incompatible with type 'id<UITextViewDelegate>' inherited from 'UITextView'
라고합니다.
왜 시스템이 텍스트 뷰 응답기를 만들고 싶지 않습니까? 왜 내가이 경고를받는거야? 저보다 나은 해결책이 있습니까?
나는이 편집 가능한 속성을 설정하려했지만 그것은 또한 inputAccessoryView'이 때문에이'inputAccessoryView' 보여줍니다 첫 번째로 반응이되면 '이있다. 이 객체에 대한 첫 번째 응답자가되는 것을 제어하려고합니다. 어쨌든, 당신의 답은 정확합니다. 정보가없는 프리 컴파일러를 사용하는 것은 수치 스럽습니다 ... – user500