当我符合协议时,关于分配给id <UITextFieldDelegate>的警告

我的视图控制器符合UITextFieldDelegate,但是当我尝试将我的文本字段的.delegate字段设置为self时,我收到警告:

“从不兼容的types'AddReviewViewController * const __strong'分配给'id'”

我的头文件是这样的:

#import <UIKit/UIKit.h> @interface AddReviewViewController : UIViewController <UITextFieldDelegate> @property (nonatomic) int storeID; @end 

所以,正如你所看到的,我宣布它符合协议。 在.m文件中,我有这个:

 @property (strong, nonatomic) IBOutlet UITextView *reviewTextView; 

在“@interface AddReviewViewController()”部分

然后,在viewDidLoad中,我这样做:

 _reviewTextView.delegate = self; 

那是我得到警告的地方。 我已经尝试清理和重build,并重新启动XCode。 我在这里错过了很明显的东西吗 我遵守协议….

编辑:感谢您的快速帮助。 在我睡眠不足的状态下,我不停地重读和发誓,这正是我所做的,但是,错字,错字。 我几分钟不能标记答案,但问题解决了,谢谢!

在你的头部你有UITextFieldDelegate然后你声明UITextView 。 这两者之间有很大的区别。

编辑

 @interface AddReviewViewController : UIViewController <UITextFieldDelegate> 

 @interface AddReviewViewController : UIViewController <UITextViewDelegate> 

也许它应该是UITextViewDelegate在:

 @interface AddReviewViewController : UIViewController <UITextFieldDelegate> @property (nonatomic) int storeID; @end 

我得到这样的错误,因为这个代码:

 @interface PlaceOrderController : UIViewController < UINavigationControllerDelegate, UITextViewDelegate > @property (weak, nonatomic) IBOutlet UITextField *dateForUserDOB; 

为了解决这个问题我使用了以下内容

 @interface PlaceOrderController : UIViewController < UINavigationControllerDelegate, UITextFieldDelegate > @property (weak, nonatomic) IBOutlet UITextField *dateForUserDOB; 

总结:使用TextField而不是TextView