1

我正在嘗試檢測用戶在鍵入時觸摸鍵盤上的某個鍵多長時間,以便例如在按某個鍵時彈出對話框足夠長的時間。如何檢測iPhone屏幕鍵盤上的觸摸

通過測量touchesEndedtouchesBegan之間的時間來檢測此常規視圖是微不足道的。但是,我沒有收到任何來自鍵盤的事件。關於如何從鍵盤接收touchesEndedtouchesBegan事件的任何想法?

回答

2

您無法將所需的內容添加到系統提供的鍵盤。然而,你可以通過實現你自己的自定義鍵盤來實現你想要的,你可以使用任何你想要處理長按鍵的方法。作爲如何實現自定義鍵盤的一個示例,請參閱previous this previous question

執行此操作時,不是檢查touchesEnded和touchesBegan來確定何時發生長觸摸,您應該提供iOS提供的UILongPressGestureRecognizer

0

這些聽衆添加到您的文本字段

// editing began: 
[textField addTarget:self action:@selector(textFieldEditingDidBegin:) forControlEvents:UIControlEventEditingDidBegin]; 
// editing changed: 
[textField addTarget:self action:@selector(editingChanged:)forControlEvents:UIControlEventEditingChanged]; 
// editing ended: 
[textField addTarget:self action:@selector(editingDidEnd:) forControlEvents:UIControlEventEditingDidEnd]; 

您也可以使用這些通知,知道鍵盤顯示時,隱藏:

// keyboard shows on screen: 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow) name:UIKeyboardDidShowNotification object:nil]; 
// keyboard is hidden: 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide) name:UIKeyboardDidHideNotification object:nil]; 
+0

謝謝,但這些事件不允許我跟蹤某個鍵被按下多長時間。我正在捕獲通過shouldChangeCharactersInRange方法已經按下的內容。 – user1071490

1

我不相信你就能夠請執行此操作(特別是在App Store應用程序中),因爲按住某些按鍵時系統本身會顯示額外的菜單,甚至可能沒有屏幕鍵盤(藍牙鍵盤)。