我的應用程序在窗口中有許多按鈕,並且我想將所有按鈕都設置爲獨立觸摸。你有什麼建議嗎?謝謝iOS:在視圖中爲所有按鈕設置專屬觸摸
回答
你只是想找一個簡單的方法來一次設置它們?
如果您在陣列中的所有按鈕(例如它們都連接到同一IBOutletCollection),您可以使用鍵值編碼設置數組的exclusiveTouch屬性:
[buttonArray setValue:[NSNumber numberWithBool:YES] forKey:@"exclusiveTouch"];
NSArray中,然後將在數組中的每個項目上調用相同的方法。
如果這些按鈕都在同一視圖中,則可以遍歷視圖的子視圖,測試特定的子視圖是否爲按鈕(或者如果有一組,則測試標記)並分別設置exclusiveTouch。
我剛剛找到這個答案:
#pragma mark Set Buttons Exclusive Touch Yes
-(void)setExclusiveTouchForButtons:(UIView *)myView
{
for (UIView * button in [myView subviews]) {
if([button isKindOfClass:[UIButton class]])
[((UIButton *)button) setExclusiveTouch:YES];
}
}
有一種方法來設置獨佔觸摸到應用中的所有按鈕,可能會有所幫助。
#import </usr/include/objc/objc-class.h>
static IMP gOringinalWillMoveToSuperview = nil;
static id newMoveToSuperviewPlusSettingExclusiveTouch(id self,SEL selector,...)
{
va_list arg_list;
va_start(arg_list,selector);
gOringinalWillMoveToSuperview(self,selector,arg_list);
[self setExclusiveTouch:YES];
return nil;
}
-(void)addSettingExclusiveTouchToAllUIViewMethodWillMoveToSuperview
{
gOringinalWillMoveToSuperview = class_getMethodImplementation([UIButton class], @selector(willMoveToSuperview:));
class_replaceMethod([UIButton class], @selector(willMoveToSuperview:), &newMoveToSuperviewPlusSettingExclusiveTouch, "[email protected]:");
}
我應該在哪裏粘貼這段代碼? – 2014-06-04 19:27:48
@ZuzooVn你應該粘貼此代碼之前,任何想要設置獨家觸摸創建視圖。 – CarmeloS 2014-06-06 04:44:43
如果您要實用地添加按鈕,請在添加到其超級視圖之前,爲每個按鈕發送消息至按鈕[button setExclusiveTouch:YES];
。否則,如果您使用的是xib,則必須將相同的消息發送到viewDidLoad或loadView中的按鈕。
-(void)setExclusiveTouchForButtons:(UIView *)myView
{
for (UIView * v in [myView subviews]) {
if([v isKindOfClass:[UIButton class]])
[((UIButton *)v) setExclusiveTouch:YES];
else if ([v isKindOfClass:[UIView class]]){
[self setExclusiveTouchForButtons:v];
}
}
}
然後在viewDidAppear
如果你想設置exclusiveTouch在整個應用程序方法混寫 ALL UIButtons會爲您提供完美的解決方案調用這個函數。
這個答案解釋得非常好:https://stackoverflow.com/a/24534814/976246,它對我來說非常合適。
也通過這篇文章瞭解如何this (http://nshipster.com/method-swizzling/) tecknique可用於各種目的。
這裏是迅速一些代碼,將設置獨佔觸摸到所有的按鈕在你的ViewController的看法
for button in self.view.subviews {
if(button.isKindOfClass(UIButton)){
(button as! UIButton).exclusiveTouch = true
}
}
- 1. iOS按鈕嵌套在視圖中沒有接收到觸摸
- 2. iOS子視圖中按鈕沒有響應觸摸。
- 3. react-native在按鈕上顯示觸摸ID視圖(iOS)
- 4. ios中的按鈕觸摸狀態
- 5. 按鈕titleLabel設置爲隱藏YES,再次出現在觸摸
- 6. 如何在iOS中將我的所有視圖設置爲navigationController?
- 7. iOS - 通過視圖轉發所有觸摸
- 8. 觸摸按鈕時設置背景圖片
- 9. 如何在視圖中設置觸摸位置
- 10. 觸摸IOS中的視圖時可以觸摸點嗎?
- 11. iOS向上觸摸禁用按鈕
- 12. 自定義視圖帶點擊/觸摸按鈕行爲
- 13. iOS在動畫視圖中設置autolyout符合所有設備
- 14. 將餅圖設置爲不可觸摸
- 15. 觸摸內部視圖和外部按鈕時觸發事件
- 16. ImageButton在按鈕觸摸
- 17. iPhone SDK:如何在Alert視圖中觸摸按鈕時打開Web視圖?
- 18. 當我觸摸TextView時觸摸按鈕
- 19. 有沒有辦法在視圖中反轉觸摸位置?
- 20. 如何在子視圖中設置觸摸事件?
- 21. 在保存按鈕被觸摸後重新初始化視圖
- 22. 在滾動視圖頂部的可觸摸信息(i)按鈕
- 23. 在後退按鈕後導航視圖煎茶觸摸顯示
- 24. 用於觸摸設備的CSS按鈕?
- 25. iPhone,在調光視圖中捕獲所有觸摸事件
- 26. ios觸摸從一個按鈕移動到另一個按鈕
- 27. 如何在iOS中將圖像設置爲uialertview按鈕?
- 28. 圖像視圖與可可觸摸頂部按鈕
- 29. 觸摸位置使用按鈕swift 3
- 30. iOS子視圖不轉發觸摸。
他們不在陣。可以在XIB中設置它們嗎? – DavidNg 2012-08-12 04:55:06