第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何忽略觸摸事件并將其傳遞給另一個(gè)子視圖的UIControl對(duì)象?

如何忽略觸摸事件并將其傳遞給另一個(gè)子視圖的UIControl對(duì)象?

iOS
尚方寶劍之說 2019-12-21 12:58:19
我有一個(gè)自定義的UIViewController,其UIView占據(jù)了屏幕的一角,但是除了其中有一些按鈕和內(nèi)容的部分以外,其余大部分都是透明的。由于該視圖上對(duì)象的布局,該視圖的框架可以掩蓋其下方的一些按鈕。我希望能夠忽略該視圖上的任何觸摸,如果它們沒有觸摸任何重要的東西,但是我似乎只能傳遞實(shí)際的觸摸事件(touchesEnded / nextResponder的東西)。如果我有一個(gè)UIButton或類似的不使用touchesEnded的東西,如何將touch事件傳遞給它?我不能只是手動(dòng)找出要調(diào)用的按鈕選擇器,因?yàn)榇俗远xViewController可以用于許多不同的視圖。我基本上需要一種方法來稱呼它:[self.nextResponder touchesEnded:touches withEvent:event];以及UIControl類型。
查看完整描述

3 回答

?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

可能最好的方法是hitTest:withEvent:在要忽略觸摸的視圖中重寫。根據(jù)視圖層次結(jié)構(gòu)的復(fù)雜性,有兩種簡(jiǎn)單的方法可以實(shí)現(xiàn)此目的。


如果在該視圖下有對(duì)該視圖的引用,則可以忽略:


- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

{

    UIView *hitView = [super hitTest:point withEvent:event];


    // If the hitView is THIS view, return the view that you want to receive the touch instead:

    if (hitView == self) {

        return otherView;

    }

    // Else return the hitView (as it could be one of this view's buttons):

    return hitView;

}

如果您沒有對(duì)該視圖的引用:


- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

{

    UIView *hitView = [super hitTest:point withEvent:event];


    // If the hitView is THIS view, return nil and allow hitTest:withEvent: to

    // continue traversing the hierarchy to find the underlying view.

    if (hitView == self) {

        return nil;

    }

    // Else return the hitView (as it could be one of this view's buttons):

    return hitView;

}

我建議第一種方法最可靠(如果有可能獲得對(duì)基礎(chǔ)視圖的引用)。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
  • 3 回答
  • 0 關(guān)注
  • 695 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)