我正在嘗試檢測用戶在鍵入時觸摸鍵盤上的某個鍵多長時間,以便例如在按某個鍵時彈出對話框足夠長的時間。如何檢測iPhone屏幕鍵盤上的觸摸
通過測量touchesEnded
和touchesBegan
之間的時間來檢測此常規視圖是微不足道的。但是,我沒有收到任何來自鍵盤的事件。關於如何從鍵盤接收touchesEnded
和touchesBegan
事件的任何想法?
我正在嘗試檢測用戶在鍵入時觸摸鍵盤上的某個鍵多長時間,以便例如在按某個鍵時彈出對話框足夠長的時間。如何檢測iPhone屏幕鍵盤上的觸摸
通過測量touchesEnded
和touchesBegan
之間的時間來檢測此常規視圖是微不足道的。但是,我沒有收到任何來自鍵盤的事件。關於如何從鍵盤接收touchesEnded
和touchesBegan
事件的任何想法?
您無法將所需的內容添加到系統提供的鍵盤。然而,你可以通過實現你自己的自定義鍵盤來實現你想要的,你可以使用任何你想要處理長按鍵的方法。作爲如何實現自定義鍵盤的一個示例,請參閱previous this previous question。
執行此操作時,不是檢查touchesEnded和touchesBegan來確定何時發生長觸摸,您應該提供iOS提供的UILongPressGestureRecognizer。
這些聽衆添加到您的文本字段
// 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];
我不相信你就能夠請執行此操作(特別是在App Store應用程序中),因爲按住某些按鍵時系統本身會顯示額外的菜單,甚至可能沒有屏幕鍵盤(藍牙鍵盤)。
謝謝,但這些事件不允許我跟蹤某個鍵被按下多長時間。我正在捕獲通過shouldChangeCharactersInRange方法已經按下的內容。 – user1071490