-
因为刚用RAC库, 不知如何通过signals监听枚举类型
UIKtyboardType
然后求助强大的Stack Overflow
终于两个小时后一位国际友人回答了这个问题,经过测试正确感谢. -
代码如下
.h
文件
#import <UIKit/UIKit.h>
@interface XBXMLoginTextField : UIView
@property (nonatomic, assign) UIKeyboardType keyboardType;
@end
.m
文件
- (instancetype)init {
if (self = [super init]) {
[RACObserve(self, keyboardType) subscribeNext:^(UIKeyboardType x) {
}];
}
return self;
}
-
这种做法编译都通不过报错
Incompatible block pointer types sending 'void (^)(UIKeyboardType)' to parameter of type 'void (^ _Nonnull)(id _Nullable __strong)'
-
正确做法如下:
-
国际友人的意思大概是: 你得用RAC自己特有的监听数据类型的NSNumber类型,然后自己转换成integer类型才可以.感谢danielhadar
[RACObserve(self, keyboardType) subscribeNext:^(NSNumber *keyboardType) {
NSLog(@"%ld", (long)keyboardType.integerValue);
// Or any other user of keyboardType.integerValue, such as:
if (keyboardType.integerValue == UIKeyboardTypeURL) {
// Do stuff.
}
}];
- 截图:
原文链接