ios數字鍵盤,點選手勢、滑動、長按手勢並存,解決手勢衝突問題
嗯,之所以有手勢衝突,是因為數字鍵原來的開發定義的是uibutton,有事件衝突。關掉數字鍵的響應 enabled = false。手勢全部加入到數字鍵的super view,天然的系統就支援流暢的多手勢。如果點選的話,就判斷點選的點是否落在UILabel的frame裡面即可。
//1-0數字數字背景view UIView *numberBtnBgView = [[UIView alloc] initWithFrame:CGRectMake(0, 5, self.frame.size.width, 50)]; numberBtnBgView.userInteractionEnabled = YES; //增加滑動手勢 [numberBtnBgView addGestureRecognizer:[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTopViewChangedMouseLocation:)]]; //增加單擊手勢 UITapGestureRecognizer *tapSuperGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(numberTapGesture:)]; [numberBtnBgView addGestureRecognizer:tapSuperGesture]; //增加長按手勢 UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(numberLongPressKeyboardView:)]; [numberBtnBgView addGestureRecognizer:longPress]; [self addSubview:numberBtnBgView]; //記錄數字鍵 self.mutKeyBtns = [NSMutableArray array]; for (int i = 0; i < 10; i ++) { YMKeyButton *btn = [[YMKeyButton alloc] initWithFrame:CGRectMake(3+i*(spaceWidth+kYMKeyButtonWidth*(kKeyWindow.width/375.0)), 5, 0, 0)]; [btn setTitle:@((i+1)%10).stringValue forState:UIControlStateNormal]; btn.enabled = NO; [btn setBackgroundImage:[UIImage imageNamed:@"key_bg_white"] forState:UIControlStateDisabled]; [self.mutKeyBtns addObject:btn]; btn.userInteractionEnabled = NO; [self addSubview:btn]; }
對應的手勢響應事件:
#pragma mark - 數字鍵盤左右移動滑動游標手勢響應事件 - (void)panTopViewChangedMouseLocation:(UIPanGestureRecognizer *)pan { CGPoint point = [pan translationInView:self]; static CGPoint center; switch (pan.state) { case UIGestureRecognizerStateBegan: center = point; break; case UIGestureRecognizerStateChanged: if (point.x-center.x>5.0) { if (_delegate && [_delegate respondsToSelector:@selector(YMKeyboard:moveMouseLocation:)]) { [_delegate YMKeyboard:self moveMouseLocation:1]; } center = point; } else if (center.x-point.x>5.0) { if (_delegate && [_delegate respondsToSelector:@selector(YMKeyboard:moveMouseLocation:)]) { [_delegate YMKeyboard:self moveMouseLocation:-1]; } center = point; } break; default: break; } }
#pragma mark - 數字鍵盤長按手勢響應事件 - (void)numberLongPressKeyboardView:(UILongPressGestureRecognizer *)gesture{ CGPoint point = [gesture locationInView:self]; NSInteger clickIndex = -1; for (NSInteger i = 0; i<self.mutKeyBtns.count; i++) { YMKeyButton *btn = self.mutKeyBtns[i]; BOOL isContain = CGRectContainsPoint(btn.frame,point); if (isContain) { clickIndex = i ; } } if (clickIndex == -1) { return; }else{ //如果長按的是數字鍵盤區域 YMKeyButton *btn = self.mutKeyBtns[clickIndex]; switch (gesture.state) { case UIGestureRecognizerStateCancelled: case UIGestureRecognizerStateEnded: [self.popView removeFromSuperview]; // 新增輸入框的內容 if (btn) {} break; case UIGestureRecognizerStateBegan: case UIGestureRecognizerStateChanged: { if (!self.popView.superview) { [self.popView showFrom:btn]; } break; } default: break; } } }
#pragma mark - 1-0 數字點選手勢響應事件
- (void)numberTapGesture:(UITapGestureRecognizer *)gesture{
CGPoint point = [gesture locationInView:self];
NSInteger clickIndex = -1;
for (NSInteger i = 0; i<self.mutKeyBtns.count; i++) {
YMKeyButton *btn = self.mutKeyBtns[i];
BOOL isContain = CGRectContainsPoint(btn.frame,point);
if (isContain) {
clickIndex = i ;
}
}
if (clickIndex == -1) {
return;
}else{
[self clickNumberBtn:self.mutKeyBtns[clickIndex]];
}
}
相關推薦
VS程式設計,編輯WPF過程中,點選設計器中介面某一控制元件,在XAML中高亮突出顯示相應的控制元件程式碼的設定方法。
在編輯製件WPF過程中,當介面中控制元件較多時,可通過點選設計器中具體的控制元件,從而中在xaml程式碼視窗中快速跳轉到對應的部分。為了突出顯示該部分控制元件程式碼的名稱,方便視覺上直觀的觀察到被選中的控制元件對應的XAML程式碼,可以在VS中設定:選中控制元件後,高亮顯示對應的XAML
vue點選、滑動和長按等事件處理(自定義指令)
將以下程式碼封裝在一個js檔案裡,註釋很詳細,就不解釋了 import Vue from 'vue'; /** * @param el 繫結的DOM * @param binding 自定義指令中的binding物件 * @param type 繫結的事件型別 *
ViewPager和Testview結合使用,點選切換和滑動切換
老規矩,第一先上圖,這樣是為了讓大家能知道是不是想要的效果。 開始上程式碼了: 首先是Activity的xml: <?xml version="1.0" encoding="utf-8"?> <
TabLayout和RecyclerView結合,點選TabLayout會切換到對應的RecyclerView位置,滾動RecyclerView時TabLayout會跟著切換到對應位置。
一、效果圖 二、實現原理 1、頁面佈局從上到下為:頂部的“title”->title下面隱藏的tablayout(mainTab)->最底部的recycle人view,其中recycleview包含 1)自己的頭部、2)頭部下面的tablayout(tvT
ios數字鍵盤,點選手勢、滑動、長按手勢並存,解決手勢衝突問題
嗯,之所以有手勢衝突,是因為數字鍵原來的開發定義的是uibutton,有事件衝突。關掉數字鍵的響應 enabled = false。手勢全部加入到數字鍵的super view,天然的系統就支援流暢的多手勢。如果點選的話,就判斷點選的點是否落在UILabel的frame裡面即可
一個可以隨手勢拖動的EditText,點選更改內容,附帶解決軟鍵盤遮擋終極方法
慣例先來看效果圖: 最近產品同學的需求,要求定製一個可拖拽可編輯的文字,原本覺得還挺簡單,不就是寫個EditText處理一下touch事件麼,後來做了發現還有些小坑,記錄一下,順便給大家做個參考。 試錯 首先我嘗試自定義一個EditText,重寫o
iOS開發中,點選介面空白處或點選背景收起鍵盤
在iOS開發中,我們會在UITextView、UITextField等控制元件裡編輯或者輸入文字結束後,需要關閉鍵盤。最經常的是,點選介面空白處或點選背景收起鍵盤。 通過在在viewDidLoad中新
[IOS]Uiwebview+js,點選圖片得到地址
網上的教程你複製我,我複製你,特別容易誤導像我這樣的新手,好不容易找到一個方法,卻因為 網上給的js程式碼用了系統的click方法,導致一直無效。 網頁中圖片的節點是 img,利用js 得到圖片節點下的所有地址,並且為每一個圖片新增點選事件 點選時,觸發一個url,即圖片的地址。
微信JSSDK上傳預覽多圖,ios/Android。點選檢視大圖,支援滑動。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=dev
vue自定義移動端touch事件,點選、滑動、長按事件
**HTML** <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href="favicon.ico" mce_href="favicon.
佈局中同時使用Toolbar和EditText時,點選鍵盤彈出時標題欄被拉伸
在Toolbar中新增 android:fitsSystemWindows="true" 這時,如果我們的layout中包含可滾動的控制元件如ListView、ScrollView(即在鍵盤彈出時會
jq 鍵盤事件,點選鍵盤上的上鍵,input上一個獲取焦點,點選下鍵,input下一個獲取焦點
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script
js自定義右鍵選單,點選自定義選單隱藏、顯示指定div
首先寫好自己想要的右鍵選單的樣子,然後設定該選單div為預設隱藏,滑鼠右擊後設置css顯示該選單(display:block;),並禁用瀏覽器右鍵預設選單。 接下來就可以寫選單中具體項的
iOS 事件穿透,點選穿透,控制元件不響應事件
前言 小夥伴們在開發中是否遇到過這樣的需求呢,一個控制元件的某個部分被另外一個控制元件遮擋住,當點選這個重疊部分時,需要響應被遮蓋控制元件的點選事件,就如下圖所示 當我們點選區域3時,響應藍色按鈕的點選事件,點選區域1和2時,響應紅色按鈕的點選事件,對於區域1和3沒什麼好說的,那如何讓紅色按鈕響應區域2
移動端HTML5,ios(針對safari瀏覽器)點選事件閃現黑灰色背景解決方案
移動端HTML5,ios(針對safari瀏覽器)點選事件閃現黑灰色背景解決方案 最近做一個h5內嵌頁,用了swiper,首屏並未使用點選事件,只是有圖片背景和文字。但是ios開發那邊發現 長按首屏,會閃現一個暗黑的半透明的遮罩,隨後消失。發現分享出去的頁面也有這個問題。 後來百度發現是
前端輸入密碼顯示**,點選某個控制元件顯示數字
首先這個是回答別人問題的答案。但由於第一次貼上的答案是有bug的,所以想進行第二次回覆,結果被禁言了,一臉懵逼,好吧,禁就禁吧,我將答案寫成部落格不會被禁了吧?首先說明一下,這是基於jquery的 最簡單的是現有的可以用一下辦法 顯示密碼 $
android 點選EditText彈鍵盤,點選其他控制元件收鍵盤不觸發點選事件,特1控制元件收鍵盤觸發點選,特2控制元件點選不收鍵盤
說實話開發android,鍵盤真的很不聽話,非常難用,於是百度找到dispatchTouchEvent進行重寫可完成鍵盤收放,但還是不夠完美,我期望的功能如下: 1.基礎功能: a.點選輸入控制元件彈出鍵盤 b.點選非輸入控制元件收起鍵盤 2.特殊功能1
iOS UITextView 設定 NSLinkAttributeName 屬性,點選連結跳轉
@interface ViewController ()<UITextViewDelegate>- (void)viewDidLoad{ [super viewDidLoad]; NSMutableAttributedString *str = [[NSMutableAttribu
IOS自定義圖片瀏覽器,支援瀏覽多張圖片,點選,雙擊,兩手指縮放操作,並顯示載入進度條
圖片瀏覽器Controller的主要思路是:新建一個 JZAlbumViewController,在這個controller裡主要顯示一個UIScrollView,這個UIScrollView用來顯
Android相簿支援檢視本地相簿,點選放大圖片,滑動切換圖片,手勢放大縮小
最近在做一個專案,需要用到點選選擇相簿圖片和展示好友說說圖片,之前也未接觸過,找了很久,都沒有找到我想要的效果,不是隻能檢視相簿點選放大,要不就只是左右滑動的demo,於是修改了兩個大神的程式碼(來源