如何绑定在 objc 中更改的枚举变量?

How to bind enumerate variable changed in objc?

我准备将我的项目迁移到 RAC,但是当我想绑定 属性 的更改时出现错误。

#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;
}

有错误-> 不兼容的块指针类型将 'void (^)(UIKeyboardType)' 发送到 'void (^ _Nonnull)(id _Nullable __strong)'

类型的参数

我的代码有什么问题?

RACObserve returns 一个将其整数值作为盒装 NSNumber * 触发的信号,因此您需要利用其 integerValue:

[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.
    }
}];