ReactiveCocoa 監聽枚舉類型enumerate 或者 NSInteger類型

  • 由於剛用RAC庫, 不知如何經過signals監聽枚舉類型UIKtyboardType而後求助強大的Stack Overflow終於兩個小時後一位國際友人回答了這個問題,通過測試正確感謝.測試

  • 代碼以下.h文件atom

#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)'code

  • 正確作法以下:
  • 國際友人的意思大概是: 你得用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.
    }
}];
  • 截圖:

原文連接

相關文章
相關標籤/搜索