国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS開發中Subview的事件響應以及獲取subview的方法

iOS開發中Subview的事件響應以及獲取subview的方法

2020-12-24 15:28iOS開發網 IOS

這篇文章主要介紹了iOS開發中Subview的事件響應以及獲取subview的方法,代碼基于傳統的Objective-C,需要的朋友可以參考下

subview的事件響應
在view的層級里面,默認情況下subview是可以顯示到其父view的frame區域以外的,通過設置cliptobounds屬性為yes,可以限制subview的顯示區域。但是touch在各個uiview中傳遞的時候,區域時限制在view的frame內,此處包含兩個信息:1、在當前view的frame以外所做的操作是不會傳遞到該view中的,這一點很容易理解。2、如果touch事件是發生在當前view的frame以外,該view所有的subview將也不會再收到該消息。這一點通常容易被我們忽略,很多奇怪的問題就是這個引起的。
 
  下面請看一個小例子,定制view的代碼如下:
 

復制代碼 代碼如下:


svtestclipsubviewevent.h

 


//

//  svtestclipsubviewevent.h

//  svuiviewsample

//

//  created by maple on 3/19/12.

//  copyright (c) 2012 smileevday. all rights reserved.

//

//  默認的情況下,subview可以超出父view的frame,即可以顯示到父view的外邊

//  但是消息的接受返回卻是由于父view的大小限制,即出了父view的subview將不能收到消息

//  在程序中一定要注意當前程序view的最底層是充滿整個window的可用區域的,

//  否則將會導致某些區域明明有按鈕但是卻點不中的問題

 

#import <uikit/uikit.h>

 

@interface svtestclipsubviewevent : uiview

@end

 

 

 

復制代碼 代碼如下:


//
//  svtestclipsubviewevent.m
//  svuiviewsample
//
//  created by maple on 3/19/12.
//  copyright (c) 2012 smileevday. all rights reserved.
//

 

#import "svtestclipsubviewevent.h"

@interface svtestclipsubviewevent()

- (void)btnaction:(uibutton*)btn;

@end

@implementation svtestclipsubviewevent

- (id)initwithframe:(cgrect)frame
{   
    self = [super initwithframe:frame];   
    if (self) {       
        // initialization code       
        self.backgroundcolor = [uicolor redcolor];               
        uibutton *testoutbtn = [uibutton buttonwithtype:uibuttontyperoundedrect];                    testoutbtn.frame = cgrectmake(-80, -50, 70, 30);      
        [testoutbtn addtarget:self action:@selecto (btnaction: forcontrolevents:uicontroleventtouchupinside];       
        [testoutbtn settitle:@"i'm out" forstate:uicontrolstatenormal];       
        [self addsubview:testoutbtn];                
        uibutton *testinbtn = [uibutton buttonwithtype:uibuttontyperoundedrect];                    testinbtn.frame = cgrectmake(20, 30, 70, 30);       
        [testinbtn settitle:@"i'm in" forstate:uicontrolstatenormal];       
        [testinbtn addtarget:self action:@selector(btnaction: forcontrolevents:uicontroleventtouchupinside];       
        [self addsubview:testinbtn];   
    }   
    return self;
}


/*
// only override drawrect: if you perform custom drawing.
// an empty implementation adversely affects performance during animation.
- (void)drawrect:(cgrect)rect
{   
    // drawing code
}
*/

- (void)btnaction:(uibutton*)sender
{   
    nslog(@"hi, you tap button %@", [sender titleforstate:uicontrolstatenormal]);
}
@end

 


  在程序的viewcontroller中添加如下測試代碼:
 

復制代碼 代碼如下:

svtestclipsubviewevent *testclipsubview = [[svtestclipsubviewevent alloc]initwithframe:cgrectmake(100, 100, 150, 150)];
[self.view addsubview:testclipsubview];
[testclipsubview release];


  運行可以看到如下界面:

 

iOS開發中Subview的事件響應以及獲取subview的方法

獲取subview
通常我們在view層級里面對subview的操作可以通過兩種方式:1、保留一個subview的引用,然后在類中通過該引用對該subview進行操作,但是要注意在適當的位置添加內存維護的代碼,退出前手動釋放。2、設置subview的tag,讓后在要使用的時候,通過viewwithtag獲取到相應的subview,這種方法比較簡潔,也不用自己去維護內存。
 
  viewwithtag: 通常采用深度遍歷優先的算法,返回第一個tag和給定tag相等的subview。這就導致了一個當一個view的多個subview的tag相同的時候,我們通過該方法得到的view可能并不是自己想要的。
 
  下面通過一個小例子驗證一下,代碼如下:
 

復制代碼 代碼如下:


//
//  svtestviewtag.h
//  svuiviewsample
//
//  created by maple on 3/18/12.
//  copyright (c) 2012 smileevday. all rights reserved.
//
//  view根據tag獲取subview的時候執行的是深度優先遍歷的算法
//  返回第一個tag和請求tag相等的子view
//  從subviews中查找,最下層的優先找到

 

#import <uikit/uikit.h>

@interface svtestviewwithtag : uiview

@end

 

iOS開發中Subview的事件響應以及獲取subview的方法
例子中每個subview都是一個uilabel,而且設置了相應的內容。按鈕的響應函數的實現思路:首先隱藏所有類型為uilabel的subview(排除uibutton,因為button需要一直顯示),然后根據指定的tag獲取到相應的subview,該subview及其superview的hidden屬性為no。這樣就可以保證點擊按鈕的時候只顯示的是第一個tag和指定tag相等的subview。
 
  為了驗證viewwithtag獲取subview的原理:
 
  首先我在subview1中添加了兩個tag都為11的subview11和subview12。 運行程序可以,當我們點擊"show tag 11"按鈕的時候屏幕上將顯示“subview11”,而非“subview12”。同時不管你點擊幾次該按鈕,始終只顯示“subview11”。這樣可以看出來同一層級中獲取subview時候查找順序為index從小到大的原則,即位于相對下層的將首先被找到。
 
  其次我還在subview1中添加了tag均為13的subview13,同時向view中添加了tag也為13的subview2,運行程序點擊“show tag 13”按鈕,屏幕上將會顯示“subview13”,而非“subview2”。這可以驗證viewwithtag在搜索的時候遵循深度優先遍歷的原則,即會首先查找最下層的view并遞歸查詢其subview。
 
  綜上兩點我們可以看出來viewwithtag獲取subview的基本原則,即遵循深度優先,下層優先兩個原則。

延伸 · 閱讀

精彩推薦
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
主站蜘蛛池模板: 免费在线看黄 | 免费的av网站| 亚洲天堂一区 | 欧美中文字幕一区二区三区亚洲 | 午夜视频在线观看网站 | 国产精品日韩一区二区 | 亚洲午夜剧场 | 九九99九九 | 国产成人黄色片 | 啪啪伊人 | 91精品久久 | www.日韩在线观看 | 欧美一级二级视频 | 黄色一级大片在线免费看产 | 久久国产成人 | 日韩美女毛片 | 亚洲欧洲在线观看 | 中文字幕在线一区 | 日韩中文字幕在线播放 | 亚洲国产高清在线 | 精品久久久久久久久久 | 在线a电影| 天天爽夜夜爽夜夜爽精品视频 | 国产精品一区久久久 | 日韩超级大片免费看国产国产播放器 | 久久99精品一区二区三区三区 | 91亚洲国产成人久久精品网站 | 欧美一级欧美三级在线观看 | 国产高清一区 | 欧美激情久久久 | www.色小妹 | 日本在线免费看 | 国产精品成人3p一区二区三区 | 午夜精品视频 | 韩国成人精品a∨在线观看 欧美精品综合 | 91精品国产高清久久久久久久久 | 久久xxx | 黄色一级免费大片 | 狠狠躁夜夜躁人人爽天天高潮 | 日韩中文字幕在线播放 | 欧美日本一区二区三区 |