私はUITextViewを使って、そのSubViewsプロパティを使って繰り返しています。私はその後、いくつかの奇妙な理由からUITextSelectionViewとUIViewを比較する奇妙な型チェック結果
if(element.GetType() != typeof(UIView))
UITextSelectionViewがtrueと評価された例えばUITextViewのいくつかのサブタイプを使用してとのUIViewを発見したタイプを比較します。
私の知るところでは、派生クラスはfalseと評価する必要があります。ここで何が起こっていますか?
私の場合、私はUITextViewの一部であるUIContainerViewを取得し、それを反復することで私にUITextSelectionViewが与えられます。
それぞれのタイプで示すが、のUIView両方について
view.GetType().FullName
とelement.GetType().FullName
リターン共に。
「本物のための」型をチェックする唯一の方法は、オブジェクトにキャストしているようだ:
> ((object)view).Class.Name "_UITextContainerView"
> ((object)element).Class.Name "UITextSelectionView"
どの - 私のために - メソッドGetTypeを(使用してのように、すべて同じではありません)とtypeof演算。リンゴのdevのどちらで私はそれを見つけるhttps://developer.xamarin.com/api/type/UIKit.UIView/
:
は残念ながらxamarinのUIKitの-APIのエントリがないhttps://developer.apple.com/search/?q=UITextSelectionView
が、私はそれのように派生していることを示しているここでは、ヘッダー・ファイルを見つけるように見えました私は考えました:http://developer.limneos.net/?framework=UIKit.framework&header=UITextSelectionView.h
それはあなたが達成しようとしているものは明らかではないのですが。正確にUIViewではないUITextViewのサブビューを探しますか? UITextSelectionViewはUIViewではないので、その場合は必要に応じて動作します。 GetTypeメソッドとtypeof演算子を使用してTypesを比較すると、equalityは2つの型がまったく同じで、等価性が継承階層を考慮しない場合にのみtrueに評価されます。 – kyurkchyan
@kyurkchyan私はUIViewsの構造を持っており、UIViewsもそうです。これらのUIViewには、UITextViewなどの他の要素が含まれています。先頭のUIViewから反復すると、すべてのUIViewが返されますが、UITextSelectionViewにはUIViewと質問はありません。なぜですか?上の私の例は、ケースを再現する方法の例です。 – isHuman