Ich entwickle eine iPhone App, die einen Einkaufswagen enthält, und ich verwende eine UITableView, um den Warenkorb anzuzeigen. Es gibt eine Zelle für jeden Artikel, und die -tableFooterView
ist auf eine benutzerdefinierte Ansicht eingestellt, die dem Benutzer ein Textfeld gibt, um den CVV ihrer Kreditkarte und eine Schaltfläche zu überprüfen, um den Kaufvorgang abzuschließen.UIButton in der Fußzeile der Tabelle reagiert nicht auf Berührungen, wenn die Tastatur angezeigt wird
Wenn der Benutzer das CVV-Textfeld antippt, ändere ich die Größe der Tabelle, so dass die Tastatur nichts bedeckt.
- (void)keyboardWillShow:(NSNotification *)n
{
// I'll update this to animate and scroll the view once everything works
self.theTableView.frameHeight = self.view.frameHeight - KEYBOARD_HEIGHT_PORTRAIT_IPHONE;
}
Nach ihrer CVV Eingabe kann der Anwender die Taste Fertig, tippen Sie auf die Tastatur schließen:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
All das funktioniert, aber während die Tastatur sichtbar ist, meine Kasse Taste (eine normale UIButton) reagiert nicht auf Berührungsereignisse. Die Tabelle scrollt, aber das touchUpInside-Ereignis der Schaltfläche wird nie ausgelöst.
Sobald ich auf "Fertig" klicke und die Tastatur geschlossen wird, erkennt die Checkout-Schaltfläche "touchUpInside" -Ereignisse.
Von dem, was ich gesehen habe, scheint es, dass jede Taste, die von der Tastatur abgedeckt wurde, nicht auf meine Berührungen reagiert (auch nicht von der Tastatur), bis die Tastatur geschlossen wird. Schaltflächen in der gleichen tableFooterView, die nie von der Tastatur abgedeckt werden, bleiben auf Berührung reagieren, während die Tastatur sichtbar ist.
gleiches Verhalten, wenn auf iOS 5 und iOS 4.
Kann jemand irgendwelche Vorschläge von anbieten, was gehen kann? Oder hilfreiche Ideen zur Fehlerbehebung?
Danke!
bearbeiten - Update
In der Tat, der Teil des tableFooterView, die von der Tastatur abgedeckt reagiert nicht Ereignisse zu berühren. In meiner benutzerdefinierten UIView-Unterklasse habe ich -touchesBegan:withEvent:
implementiert und protokolliert nur, dass eine Berührung aufgetreten ist.
Wenn Sie an einer beliebigen Stelle in der Ansicht berühren, wird eine Protokollanweisung angezeigt, bevor die Tastatur angezeigt wird. Nachdem die Größe der Tabellenansicht geändert wurde, wird jedoch nur durch Berühren des oberen Teils der Ansicht eine Protokollanweisung generiert.
Auch ich gerade festgestellt, der Teil der TableFooterView, der von der Tastatur abgedeckt wurde, wird zu der Farbe der Hintergrundfarbe der enthaltenden Ansicht, sobald ich diesen Teil scrollen, um sichtbar zu sein.
hast du eine Lösung dafür gefunden? – rishi
@rishi hast du vielleicht eine Lösung gefunden? :) – vburojevic
@vburojevic ja, aber die Lösung war ein bisschen seltsam :), werde ich das als Antwort posten – rishi