0
次のコードをSwift 3に翻訳しようとしています。私は他のポスターがこれに答えたように感じますが、わかりません。 classType
に両方の参照にSwift 3クラスの配列全体を繰り返します
func allowTouchForSubview(subview: UIView) -> Bool {
let allowedClasses: [AnyClass] = [UITextField.self, UISearchBar.self, UITextView.self]
for classType in allowedClasses {
if subview is classType {
return true
}
if let superview = subview.superview {
if superview is classType {
return true
}
}
}
return false
}
このエラーと「宣言されていないタイプのClassTypeの使用」と言っ:
- (BOOL)allowTouchForSubview:(UIView *)subview {
NSArray *classes = @[[UITextField class], [UISearchBar class], [UITextView class]];
for (Class class in classes) {
if ([subview isKindOfClass:class]) {
return YES;
}
if ([subview.superview isKindOfClass:class]) {
return YES;
}
};
return NO;
}
は、ここで私がこれまで持っているものです。ここで何が起こっているのですか?
これが動作しているように見えます。なぜ「is」のアイディアが動作していないか、またはisKindOfが実際にやっていることの違いは何ですか? – Alex
おそらくそれはブリッジングと関係があります。 .kind(of:_)は、インスタンスの型を解決するために動的ディスパッチを使用しているようです。 –