Total Objective-C/Cocoa在這裏觸摸noob,注意。如何攔截UITextView上的長按?
我試圖攔截用戶長按UITextView(放大鏡然後出現與插入符號定位器),然後釋放觸摸,即通常「選擇」和「全選」選項出現時,放大鏡後。我想用我自己的自定義操作替換它,然後執行。
這可能嗎?
Total Objective-C/Cocoa在這裏觸摸noob,注意。如何攔截UITextView上的長按?
我試圖攔截用戶長按UITextView(放大鏡然後出現與插入符號定位器),然後釋放觸摸,即通常「選擇」和「全選」選項出現時,放大鏡後。我想用我自己的自定義操作替換它,然後執行。
這可能嗎?
你可以嘗試這樣的事情:
禁用內置長按識別
for (UIGestureRecognizer *recognizer in textView.gestureRecognizers) {
if ([recognizer isKindOfClass:[UILongPressGestureRecognizer class]]){
recognizer.enabled = NO;
}
}
然後添加@ Altealice代碼自己
UILongPressGestureRecognizer *myLongPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:<your target> action:@selector(<your custom handler>)];
[textView addGestureRecognizer:myLongPressRecognizer];
[myLongPressRecognizer release];
斯威夫特版本禁用內置長按識別器:
if let actualRecognizers = self.sourcesTextView.gestureRecognizers {
for recognizer in actualRecognizers {
if recognizer.isKindOfClass(UILongPressGestureRecognizer) {
recognizer.enabled = false
}
}
}
此解決方案的工作原理,但要小心,它會禁用textView交互,所以按下時鏈接將不會突出顯示,並且文本將不可選。
如果刪除了[LongPressgesture setMinimumPressDuration:2.0];
它會運行,因爲標籤的手勢將被調用來啓動編輯文本字段...或只是實現這個手勢代表功能
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
這看起來不錯...但有沒有辦法讓我保持放大鏡?我主要感興趣的是放大鏡後的長按釋放 - – Epaga 2010-10-09 07:59:56
嗯,以前沒有嘗試過。您可以嘗試覆蓋處理放大鏡的方法,以在處理結束時添加處理,但這可能是一種私有方法,因此可能無法與Apple審覈團隊一起使用。另一種方法是自己重新實施放大鏡。 – Altealice 2010-10-12 16:58:38
我喜歡這裏的想法,但遺憾的是這種方法無效。可能是UITextView中的隱藏子視圖,它會獲取識別器? – BadPirate 2011-05-20 19:15:54