Ich habe über eine Woche nach einer Lösung für dieses Problem gesucht. Ich antworte Ihnen, auch wenn Sie Fragen über ein Jahr alt sind, in der Hoffnung, dass dies anderen hilft.
Sorry, wenn meine Sprache nicht sehr technisch ist, aber ich bin ziemlich neu in Objective-C und iPhone Entwicklung.
Subclassing UIpickerView ist der richtige Weg, es zu tun. Aber Sie müssen die - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
Methode überschreiben. Dies ist die Methode, die aufgerufen wird, wenn Sie den Bildschirm berühren und die Ansicht zurückgibt, die auf die Berührung reagiert. Mit anderen Worten die View, deren touchesBegan:withEvent:
Methode aufgerufen wird.
Der UIPickerView hat 9 Unteransichten! In der UIPickerView-Klassenimplementierung gibt - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
self
nicht zurück (dies bedeutet, dass touchesBegan:withEvent:
, das Sie in der Unterklasse schreiben, nicht aufgerufen wird), sondern eine Unteransicht, genau die Ansicht bei Index 4 (eine undokumentierte Unterklasse namens UIPickerTable) zurückgibt.
Der Trick ist, die - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
Methode, um zurückzukehren self
so haben Sie die Kontrolle über die touchesBegan:withEvent:
, touchesMoved:withEvent:
und touchesEnded:withEvent:
Methoden.
Um bei diesen Methoden die Standardfunktionen von UIPickerView beizubehalten, MÜSSEN Sie sich daran erinnern, sie erneut aufzurufen, jedoch in der Untersicht UIPickerTable.
Ich hoffe, das macht Sinn. Ich kann jetzt keinen Code schreiben, sobald ich zuhause bin, werde ich diese Antwort bearbeiten und etwas Code hinzufügen.
Dank arbeitete es funktionierte :) – ArunGJ
dieser Code scheint zu funktionieren, es sei denn, eine Berührung tritt auf dem Rahmen, den Picker Rad unmittelbar umgibt. Das scheint eine endlose Schleife von Aufrufen der getNextResponderView zu verursachen: withEvent: method. – pistachionut
ya ich verhinderte es, indem ich nil anstelle von hitTestView von getNextResponderView zurückgab: withEvent: wenn ich das umgebende Rad berührte. – ArunGJ